【问题标题】:How to add gradient color and rounded indicator to LinearProgressBar in Android?如何在 Android 中的 LinearProgressBar 中添加渐变颜色和圆角指示器?
【发布时间】:2021-10-05 01:10:35
【问题描述】:

这是我需要的进度指示器。

我从这个答案中得到了帮助。 Gradient color Progress Indicator

这是我到目前为止所取得的成就。

我的 Progressbar 背景可绘制为:

<?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="@dimen/_11sdp" />
            <solid android:color="@color/cultured" />
        </shape>
    </item>

    <item android:id="@android:id/progress">
        <clip android:clipOrientation="horizontal">
            <shape android:shape="rectangle">
                <corners android:radius="@dimen/_11sdp" />
                <gradient
                    android:endColor="@color/colorPrimary"
                    android:startColor="@color/deep_peach" />
            </shape>
        </clip>
    </item>

</layer-list>

我的进度条代码是:

 <ProgressBar
                android:id="@+id/viewLinearProgress"
                style="?android:attr/progressBarStyleHorizontal"
                android:layout_width="0dp"
                android:layout_height="4dp"
                android:layout_marginStart="@dimen/_6sdp"
                android:layout_marginTop="@dimen/_19sdp"
                android:layout_marginEnd="@dimen/_14sdp"
                android:progress="60"
                android:progressDrawable="@drawable/gradient_progressbar"
                app:layout_constraintEnd_toStartOf="@id/tvProgress"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@id/tvMessage" />

唯一的问题是——只有进度条指示器右侧的圆角没有解决。轨道没问题。

【问题讨论】:

    标签: android android-layout android-progressbar


    【解决方案1】:

    这是有效的

    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:id="@android:id/background" android:top="@dimen/size_6" android:bottom="@dimen/size_6">
            <shape>
    
                <solid android:color="#B5B6B5"/>
    
                <corners android:radius="100dp" />
            </shape>
        </item>
    
        <item android:id="@android:id/progress"
            android:top="@dimen/size_4" android:bottom="@dimen/size_4">
            <clip>
                <scale android:scaleWidth="100%" android:scaleHeight="20">
                    <shape>
                        <gradient android:endColor="#FF7400" android:startColor="#FFA119"  android:angle="180"/>
                        <corners android:radius="100dp" />
                    </shape>
                </scale>
            </clip>
        </item>
    </layer-list>
    

    使用

    <ProgressBar
        android:id="@+id/progressbar_insurance"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="match_parent"
        android:layout_height="@dimen/_14sdp"
        android:layout_marginTop="@dimen/_4sdp"
        android:indeterminate="false" />
    

    希望这对你有用,如果不起作用,请告诉我...... :)

    【讨论】:

    • 非常感谢。它工作正常。只有添加 解决了这个问题。你能解释一下吗?
    • 解释一下什么?
    • 如何仅添加&lt;scale android:scaleWidth="100%" android:scaleHeight="20"&gt; 有助于在指标右侧实现圆角?
    • 其调整高度宽度,以便出现半径。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-26
    • 2017-05-06
    • 1970-01-01
    相关资源
    最近更新 更多