Joa*_*kim 47 android android-appcompat android-progressbar android-support-library material-design
我的应用程序UI是使用Android支持库构建的,但目前没有AppCompat版本的(intederminate)进度条,我的应用程序确实需要它.
我宁愿不使用任何第三方库来实现材料设计进度条,所以我想知道是否有人知道为什么它不包含在支持库中,以及是否有任何迹象表明它到达(以及何时).
Gab*_*tti 83
您可以使用ProgressBar带有AppCompat样式的a.
只需在您的布局中添加:
<ProgressBar
style="@style/Base.Widget.AppCompat.ProgressBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:indeterminate="true"
android:visibility="visible" />
Run Code Online (Sandbox Code Playgroud)
如果您想要使用水平进度条:
<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" />
Run Code Online (Sandbox Code Playgroud)
他们遵循官方材料指南.
这是一个旧问题的答案,但我认为其他读者可能对此解决方案感兴趣:
支持库的较新版本(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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30205 次 |
| 最近记录: |