什么时候不确定的进度条会进入Android支持库

时间:2015-11-06 08:46:10

标签: android material-design android-support-library android-appcompat android-progressbar

我的应用程序UI是使用Android支持库构建的,但目前没有AppCompat版本的(intederminate)进度条,这是我的应用程序真正需要的。

我宁愿不使用任何第三方库来实现材料设计进度条,所以我想知道是否有人知道为什么它不包含在支持库中,以及是否有任何迹象表明它已到达(和时)。

3 个答案:

答案 0 :(得分:81)

您可以使用带有 AppCompat 样式的ProgressBar

只需在您的布局中添加:

<ProgressBar
        style="@style/Base.Widget.AppCompat.ProgressBar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:indeterminate="true"
        android:visibility="visible" />

如果您想要使用水平进度条:

  <ProgressBar
        style="@style/Base.Widget.AppCompat.ProgressBar.Horizontal"
        android:layout_width="match_parent"
        android:layout_height="8dp"
        android:layout_marginTop="24dp"
        android:indeterminate="true"
        android:visibility="visible" />

他们遵循官方材料guidelines

答案 1 :(得分:5)

这是对旧问题的回答,但我认为其他读者可能会对此解决方案感兴趣:

支持库的较新版本(26.1。+)包含一个名为CircularProgressDrawable的类,它实现了本机Material不确定drawable的精确外观。为了在布局中轻松使用它,您可以构建MaterialProgressBar,如下所示:

public class MaterialProgressBar extends ProgressBar{
    // Same dimensions as medium-sized native Material progress bar
    private static final int RADIUS_DP = 16;
    private static final int WIDTH_DP = 4;

    public MaterialProgressView(Context context, AttributeSet attrs) {
        super(context, attrs);

        // The version range is more or less arbitrary - you might want to modify it
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP
                || Build.VERSION.SDK_INT > Build.VERSION_CODES.O_MR1) {

            final DisplayMetrics metrics = getResources().getDisplayMetrics();
            final float screenDensity = metrics.density;

            CircularProgressDrawable drawable = new CircularProgressDrawable(context);
            drawable.setColorSchemeColors(getResources().getColor(R.color.colorPrimary));
            drawable.setCenterRadius(RADIUS_DP * screenDensity);
            drawable.setStrokeWidth(WIDTH_DP * screenDensity);
            setIndeterminateDrawable(drawable);
        }
    }
}

答案 2 :(得分:0)

我只是想改善Gabriele Mariotti先生使用风格的答案。

  1. 写一个这样的风格

    <style name="infinite_progress_horizontal" parent="Widget.AppCompat.ProgressBar.Horizontal">
        <item name="android:layout_width">match_parent</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:indeterminate">true</item>
    </style>
    
  2. 将它与您的进度条一起使用。

    <ProgressBar style="@style/infinite_progress_horizontal" />