我在用
Android RatingBar更改星星颜色
这行代码
LayerDrawable stars = (LayerDrawable) rating_bar.getProgressDrawable();
在我的 Nexus 4 模拟器 API v21 上运行良好。
在我的 Galaxy S4 API v19 上尝试相同的代码时,我收到以下错误消息:
Caused by: java.lang.ClassCastException: android.support.v7.internal.widget.TintDrawableWrapper cannot be cast to android.graphics.drawable.LayerDrawable
怎么了?
我正在使用最新的构建工具 22 进行构建,我的目标 API 也是 22。
错误消息中清楚地解释了发生的情况:
TintDrawableWrapper cannot be cast to android.graphics.drawable.LayerDrawable
支持库创建一个包装器以处理复古兼容性,您只需要考虑它即可。看看 lib 实现,它可能包含一个LayerDrawable
.
您需要执行以下操作:
LayerDrawable stars = getProgressDrawable(rating_bar);
}
private LayerDrawable getProgressDrawable(RatingBar ratingBar) {
if (Build.VERSION >= LOLLIPOP) {
return (LayerDrawable) ratingBar.getProgressDrawable();
} else {
// fetch the LayerDrawable based on Google's support implementation,
// probably a simple findViewById()
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)