Ger*_*son 12 android android-layout android-progressbar android-api-levels
我的应用程序的最低API级别是19(KitKat),并包含一个水平布局ProgressBar.我正在使用android:progressTint属性将条形色调为自定义颜色.它在Lollipop(API 21)及更高版本上运行良好,但在下面(例如在API 19上)它没有; 它以不同的颜色显示出来.原因是这个属性
仅用于API级别21及更高级别
正如Android Studio所述.
所以我想知道什么是一个很好的替代方案,也可以用来ProgressBar点亮前Lollipop设备.可以使用XML在布局文件中创建吗?或者应该以不同的方式完成?
编辑#1:我的ProgressBar用于显示百分比的具体值,而不是用于指示我的布局正在加载.我想明确这一点,因为在尝试了Kuldeep Kulkarni在下面写的内容之后,我的酒吧看起来像一个材料加载指示器(当然在Lollipop设备上,而不是KitKat设备上的任何可见结果).
Sat*_*eya 25
你可以用ProgressBar indeterminateDrawable 方法换行pre-Lollipop.
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
Drawable drawableProgress = DrawableCompat.wrap(progressBar.getIndeterminateDrawable());
DrawableCompat.setTint(drawableProgress, ContextCompat.getColor(getContext(), android.R.color.holo_green_light));
progressBar.setIndeterminateDrawable(DrawableCompat.unwrap(drawableProgress));
} else {
progressBar.getIndeterminateDrawable().setColorFilter(ContextCompat.getColor(getContext(), android.R.color.holo_green_light), PorterDuff.Mode.SRC_IN);
}
Run Code Online (Sandbox Code Playgroud)
小智 10
progress.getProgressDrawable().setColorFilter(color, PorterDuff.Mode.SRC_IN);
Run Code Online (Sandbox Code Playgroud)
小智 6
这对我有用
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:theme="@style/progressBarBlue" />
Run Code Online (Sandbox Code Playgroud)
然后在你的style.xml定义中progressBarBlue
<style name="progressBarWhite" parent="@style/Theme.AppCompat">
<item name="colorAccent">@color/blue</item>
</style>
Run Code Online (Sandbox Code Playgroud)
感谢大家的建议!:)
适合我的解决方案是使用<layer-list>根元素创建自定义可绘制XML文件.在那里,我定义与原生的Android ID的两层项目@android:id/background和@android:id/progress.在此之后,我可以定义我想要使用的形状和颜色资源.这个解决方案类似于这个问题上更受欢迎的答案.
我的res/drawable/progressbar.xml文件内容:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/background">
<shape>
<corners android:radius="2dip" /> <!--optional-->
<gradient
android:angle="270"
android:endColor="@color/gray"
android:startColor="@color/gray" />
</shape>
</item>
<item android:id="@android:id/progress">
<clip>
<shape>
<corners android:radius="2dip" /> <!--optional-->
<gradient
android:angle="270"
android:endColor="@color/blue"
android:startColor="@color/blue" />
</shape>
</clip>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
定义为progressDrawable我的ProgressBar布局XML文件中:
<ProgressBar
android:id="@+id/progress_bar"
android:layout_width="0dp"
android:layout_height="@dimen/progress_bar_height"
android:progressDrawable="@drawable/progressbar" />
Run Code Online (Sandbox Code Playgroud)
我没有机会在API 19下测试它,但在这个级别及以上它完美无缺.
| 归档时间: |
|
| 查看次数: |
10349 次 |
| 最近记录: |