如何在宽度android中制作风格大的Thinner的ProgressBar?

时间:2017-01-09 09:12:41

标签: android xml android-layout progress-bar

我有麦克风图标并围绕麦克风图标,我需要放置进度条来处理下面的一些运行过程:

<ImageView
            android:id="@+id/iv_mic_movable"
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:layout_gravity="center_horizontal"
            android:layout_marginTop="68dp"
            android:src="@drawable/record" />

        <ProgressBar
            android:id="@+id/pb_assist"
            style="?android:attr/progressBarStyleLarge"
            android:layout_width="90dp"
            android:layout_height="90dp"
            android:layout_gravity="center_horizontal"
            android:layout_marginTop="53dp"
            android:visibility="gone" />

上面的代码显示了如下UI:

enter image description here

我想像这样显示进度条,但这个进展非常厚。如何只用1dp使它更薄一些?

4 个答案:

答案 0 :(得分:2)

以上所有答案均不适用于我。苦苦挣扎的人找到了一个可行的解决方案。

progressbar_circular.xml。使用android:thicknessRatio作为圆的粗细。值越大,越薄。

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:duration="0"
    android:toDegrees="360" >

    <shape
        android:innerRadiusRatio="3"
        android:shape="ring"
        android:thicknessRatio="40"
        android:useLevel="false" >

        <size
            android:height="48dip"
            android:width="48dip" />

        <gradient
            android:centerColor="@color/colorPrimary"
            android:centerY="0.50"
            android:endColor="@color/color_black"
            android:startColor="@color/colorPrimary"
            android:type="sweep"
            android:useLevel="false" />
    </shape>

</rotate>

进度栏布局如下:

<ProgressBar
        android:id="@+id/progressBar"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        style="?android:attr/progressBarStyleLarge"
        android:indeterminateDrawable="@drawable/progressbar_circular"
        android:layout_gravity="center_horizontal"
        android:visibility="visible"/>

答案 1 :(得分:1)

这是自定义ProgressBar。您可以在形状内设置进度厚度。

<ProgressBar
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="172dp"
        android:layout_height="172dp"
        android:indeterminate="false"
        android:max="100"
        android:visibility="visible"
        android:progress="0"
        android:layout_gravity="center_horizontal" //updated line
        android:layout_marginTop="53dp"            //updated line
        android:background="@drawable/circle_shape"
        android:progressDrawable="@drawable/circle_progress_foreground"
        />

<强> circle_shape.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="ring"
android:innerRadiusRatio="2.2"
android:thickness="5dp"
android:useLevel="false">

<solid android:color="#ABBAC2" />

</shape>

<强> circle_progress_foreground.xml

根据您的要求更改android:thickness

<?xml version="1.0" encoding="utf-8"?>
<rotate  xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="270"
android:toDegrees="270">

<shape android:useLevel="true"
android:innerRadiusRatio="2.7"
android:shape="ring"
android:thickness="2dp"
xmlns:android="http://schemas.android.com/apk/res/android">
/>
<solid android:color="#fbcb09"/>
</shape>
</rotate>

答案 2 :(得分:0)

尝试在xml progessBar布局上添加以下样式,

    style="@android:style/Widget.ProgressBar.Large.Inverse"

<强>更新

尝试添加此属性:

android:progressDrawable="@android:drawable/progress_horizontal"

答案 3 :(得分:0)

您还可以通过添加最小宽度和高度来实现此目的

<ProgressBar
    android:id="@+id/progressBar1"
    style="?android:attr/progressBarStyleHorizontal"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginLeft="23dp"
    android:layout_marginTop="20dp"
    android:indeterminate="false"
    android:max="100"
    android:minHeight="5dp"
    android:minWidth="200dp"
    android:progress="1" />