不确定的progressbar何时进入Android支持库

不确定的progressbar何时进入Android支持库,android,material-design,android-support-library,android-appcompat,android-progressbar,Android,Material Design,Android Support Library,Android Appcompat,Android Progressbar,我的应用程序UI是使用Android支持库构建的,但目前还没有(intederminate)progressbar的AppCompat版本,这是我的应用程序真正需要的 我不希望使用任何第三方库来实现material design progressbars,因此我想知道是否有人知道为什么它没有包含在支持库中,以及它是否有到达(以及何时到达)的迹象。material Components library 您可以将LinearProgressIndicator与android:indeterminat

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


我不希望使用任何第三方库来实现material design progressbars,因此我想知道是否有人知道为什么它没有包含在支持库中,以及它是否有到达(以及何时到达)的迹象。

material Components library

您可以将
LinearProgressIndicator
android:indeterminate=“true”
属性一起使用:

<com.google.android.material.progressindicator.LinearProgressIndicator
    android:indeterminate="true"
    app:indicatorColor="?attr/colorPrimary"/>

注意:至少需要
1.3.0-alpha04


AppCompat

您可以将
ProgressBar
AppCompat样式一起使用

只需在布局中添加以下内容:

<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" />


他们遵循官方材料。

我只是想用风格来改进加布里埃尔·马里奥蒂先生的答案

  • 写一个这样的风格

    <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>
    
    
    匹配父项
    包装内容
    真的
    
  • 像这样与进度条一起使用

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

  • 这是一个老问题的答案,但我想其他读者可能会对这个解决方案感兴趣:

    支持库的较新版本(26.1.+)包含一个名为的类,该类实现了本机材质Undeterminate 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);
            }
        }
    }
    
    公共类MaterialProgressBar扩展了ProgressBar{
    //与中型原材料进度条尺寸相同
    专用静态最终整数半径_DP=16;
    专用静态最终整数宽度_DP=4;
    公共材料程序视图(上下文、属性集属性){
    超级(上下文,attrs);
    //版本范围或多或少是任意的-您可能需要修改它
    如果(Build.VERSION.SDK_INTBuild.VERSION\u code.O\u MR1){
    final DisplayMetrics=getResources().getDisplayMetrics();
    最终浮动屏幕密度=metrics.density;
    CircularProgressDrawable可绘制=新的CircularProgressDrawable(上下文);
    setColorSchemeColors(getResources().getColor(R.color.colorPrimary));
    可绘制。设置中心半径(半径×屏幕密度);
    可拉伸。设定行程宽度(宽度×屏幕密度);
    设置不确定可拉拔(可拉拔);
    }
    }
    }
    
    我投票结束这个问题,因为这是关于第三库未来可能的功能及其预计到达时间的问题。你说的预计到达时间是什么意思?预计到达时间?你的问题不是一个实际的编程问题,可以用适当的实际方式回答。这是问为什么一家公司发布了一个没有你希望它拥有的功能的库,如果说该公司正在考虑添加它。这纯粹是推测。任何人回答这个问题的唯一方法是,如果谷歌的某个人决定来这里告诉你为什么他们认为这不重要。也许你可以重新写你的问题,准确地发布你想要达到的目标(用屏幕截图),你在
    非应用版本中应该编码什么,以及其他开发人员建议的解决方法。我不要求任何人猜测任何事情。我想知道是否有一些支持库的未来功能列表和/或它们的计划时间。如何将其用作webView操作栏中的intederminate progressbar?我想补充一点,这将不适用于不确定的圆形栏。它们缺少可绘制的动画矢量。@Robert有没有提示如何对不确定的圆执行相同的操作?这是我使用google fu可以获得的最好结果之一。@RichardLeMesurier您可以尝试包括Chromium的这个实现。它没有使用vector drawables:这个答案只描述了如何使用平台的本机进度条。在棒棒糖制作前的设备上,你最终会看到一个不带任何标签的全息进度条。这并不能回答问题。
    
    <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>
    
    <ProgressBar style="@style/infinite_progress_horizontal" />
    
    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);
            }
        }
    }