다음은 코드입니다.
<item android:id="@android:id/background">
<shape>
<corners android:radius="8dp"/>
<solid android:color="@color/dirtyWhite"/>
</shape>
</item>
<item android:id="@android:id/progress">
<clip>
<shape>
<corners android:radius="8dp"/>
<solid android:color="@color/colorPrimaryDark"/>
</shape>
</clip>
</item>
내 진행률 표시 줄 :
<ProgressBar
android:id="@+id/activeProgress"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:progress="10"
android:progressDrawable="@drawable/rounded_corners_progress_bar"/>
나는 추가 시도 <size>
온 속성 <shape>
에 <clip
진행이 조금 더 작은 모양을 만드는 그러나 그것은 작동하지 않았다. 또한 진행 표시 줄이 평평하고 디자인에 따라 구부러지고 싶습니다. 디자인을 달성하기 위해 무엇을 변경해야합니까?
답변
진행 모양을 조금 더 작게 만드는 방법은 무엇입니까?
진행률 항목에 다음과 같이 약간의 패딩을 제공해야합니다.
<item android:id="@android:id/progress"
android:top="2dp"
android:bottom="2dp"
android:left="2dp"
android:right="2dp">
진행률 표시 줄을 디자인에 따라 곡선으로 만드는 방법은 무엇입니까?
바꾸기 <clip></clip>
와 요소를 <scale android:scaleWidth="100%"></scale>
. 그러면 모양이 자랄 때 모양이 유지되고 잘리지 않습니다. 안타깝게도 처음에는 원치 않는 시각 효과가 약간 나타납니다. 모양 모서리에는 그릴 공간이 충분하지 않기 때문입니다. 그러나 대부분의 경우 충분할 수 있습니다.
전체 코드 :
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/background">
<shape>
<corners android:radius="8dp"/>
<solid android:color="@color/dirtyWhite"/>
</shape>
</item>
<item android:id="@android:id/progress"
android:top="1dp"
android:bottom="1dp"
android:left="1dp"
android:right="1dp">
<scale android:scaleWidth="100%">
<shape>
<corners android:radius="8dp"/>
<solid android:color="@color/colorPrimaryDark"/>
</shape>
</scale>
</item>
</layer-list>
답변
재료 구성 요소 라이브러리를 사용하면 LinearProgressIndicator
및 app:trackCornerRadius
속성을 사용할 수 있습니다 .
다음과 같은 것 :
<com.google.android.material.progressindicator.LinearProgressIndicator
android:indeterminate="true"
app:trackThickness="xxdp"
app:trackCornerRadius="xdp"/>
또한을 제거 android:indeterminate="true"
하거나 사용하여 진행률 표시기를 결정하는데도 작동합니다.android:indeterminate="false"
참고 : 최소한 버전이 필요합니다 1.3.0-alpha04
.
답변
좋은 질문과 이미지에 대해 Georgi Koemdzhiev에게 감사드립니다. 그와 비슷하게 만들고 싶은 사람들은 다음을 수행하십시오.
1) ProgressBar
.
progress_bar_background.xml :
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"
>
<corners android:radius="3dp" />
<stroke android:color="@color/white" android:width="1dp" />
</shape>
2) ProgressBar
.
Curved_progress_bar.xml :
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/background">
<shape>
<corners android:radius="2dp" />
<solid android:color="@color/transparent" />
</shape>
</item>
<item android:id="@android:id/progress">
<clip>
<shape>
<corners android:radius="2dp" />
<solid android:color="#ffff00" />
</shape>
</clip>
</item>
</layer-list>
3) 레이아웃 파일에서 ProgressBar
.
<FrameLayout
android:layout_width="match_parent"
android:layout_height="6dp"
android:layout_marginStart="20dp"
android:layout_marginTop="10dp"
android:layout_marginEnd="20dp"
android:background="@drawable/progress_bar_background"
>
<ProgressBar
android:id="@+id/progress_bar"
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
android:layout_width="match_parent"
android:layout_height="4dp"
android:layout_margin="1dp"
android:indeterminate="false"
android:progressDrawable="@drawable/curved_progress_bar"
/>
</FrameLayout>
답변
내부 진행 색상, 테두리 색상, 투명한 색상으로 빈 진행 상태로 진행률 표시 줄을 얻을 수 있습니다.
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/background">
<shape>
<corners android:radius="15dip" />
<stroke android:width="1dp" android:color="@color/black" />
</shape>
</item>
<item android:id="@android:id/secondaryProgress">
<clip>
<shape>
<corners android:radius="5dip" />
<gradient
android:startColor="@color/black"
android:centerColor="@color/trans"
android:centerY="0.75"
android:endColor="@color/black"
android:angle="270"
/>
</shape>
</clip>
</item>
<item
android:id="@android:id/progress"
>
<clip>
<shape>
<corners
android:radius="5dip" />
<gradient
android:startColor="@color/black"
android:endColor="@color/black"
android:angle="270" />
</shape>
</clip>
</item>
</layer-list>