【问题标题】:Android Material Design rounded progress_barAndroid Material Design 圆形进度条
【发布时间】:2016-07-06 13:24:06
【问题描述】:

我正在开发一个使用不同进度条的应用程序,我希望它们看起来像 Google 中的那样,带有圆角。 我为每个具有不同颜色的条有一个自定义可绘制对象,它使外角圆而不是内角,如您在此处看到的: 我的自定义drawable是:

<?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/progress_bar_rounded" />
            <solid android:color="@color/progressbarBackground" />
        </shape>
    </item>

    <item android:id="@android:id/progress">
        <clip>
            <shape>
                <corners android:radius="@dimen/progress_bar_rounded" />
                <solid android:color="@color/progressbarGreen" />
            </shape>
        </clip>
    </item>
</layer-list>

进度条代码是:

<ProgressBar
    style="?android:attr/progressBarStyleHorizontal"
    android:layout_width="fill_parent"
    android:layout_height="@dimen/progress_bar_high"
    android:id="@+id/GreenProgressBar"
    android:indeterminate="false"
    android:layout_marginLeft="15dp"
    android:layout_gravity="center_vertical"
    android:progressDrawable="@drawable/custom_green_progressbar" />

我可以使用一些库作为https://github.com/akexorcist/Android-RoundCornerProgressBar,但由于它是如此简单,我认为它不值得。 我也一直在寻找不同的线程,但没有任何东西对我有用。 有什么想法,如果可能的话,不必使用 .9.png 图像?

非常感谢!

【问题讨论】:

标签: android material-design android-progressbar


【解决方案1】:

使用scale 标签而不是clip

<?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/progress_bar_rounded" />
            <solid android:color="@color/progressbarBackground" />
        </shape>
    </item>

    <item android:id="@android:id/progress">
        <scale android:scaleWidth="100%" android:useIntrinsicSizeAsMinimum="true">
            <shape>
                <corners android:radius="@dimen/progress_bar_rounded" />
                <solid android:color="@color/progressbarGreen" />
                <size android:width="@dimen/progress_bar_rounded"/>
            </shape>
        </scale>
    </item>
</layer-list>

【讨论】:

  • 谢谢!!这解决了主要问题,现在的问题是当进度很小时,进度条不适合背景并且看起来很丑。我该如何解决? i.imgur.com/vnak3Av.png
  • 一种可能的解决方案是给形状一个宽度并使用useIntrinsicSizeAsMinimum,这样它就不会缩小到低于该宽度
  • 我已尝试按比例添加android:useIntrinsicSizeAsMinimum="true",但问题仍然存在
猜你喜欢
  • 2023-04-01
  • 2023-04-08
  • 1970-01-01
  • 2016-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多