不确定的progressbar何时进入Android支持库
我的应用程序UI是使用Android支持库构建的,但目前还没有(intederminate)progressbar的AppCompat版本,这是我的应用程序真正需要的不确定的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
我不希望使用任何第三方库来实现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);
}
}
}