styles.xml
<style name="Bluetheme" parent="@androID:style/theme.Black.NoTitlebar"> <item name="theme_color">@color/theme_color_blue</item></style>
attrs.xml
<attr name="theme_color" format="reference" />
color.xml
<color name="theme_color_blue">#ff0071d3</color>
最后是drawable progress_bar.xml
<?xml version="1.0" enCoding="utf-8"?><@R_684_3419@ xmlns:androID="http://schemas.androID.com/apk/res/androID" > <item androID:ID="@androID:ID/background"> <shape> <stroke androID:wIDth="2px" androID:color="#ff515151" /> <solID androID:color="@color/transparent" /> </shape> </item> <item androID:ID="@androID:ID/progress"> <clip> <shape> <solID androID:color="?attr/theme_color" /> </shape> </clip> </item></@R_684_3419@>
当使用进度条drawable时:
<Progressbar androID:ID="@+ID/progressbarStartup" androID:layout_wIDth="match_parent" androID:layout_height="wrap_content" androID:gravity="center_horizontal" androID:progressDrawable="@drawable/progress_bar" androID:visibility="visible" />
我收到运行时错误.看来AndroID无法获得色彩主题.
06-24 16:35:57.032: E/AndroIDRuntime(3493): java.lang.RuntimeException: Unable to start activity ComponentInfo{xxx.xxx.activitIEs.startup.ActivityStartup}: androID.vIEw.InflateException: Binary XML file line #33: Error inflating class androID.Widget.Progressbar06-24 16:45:32.265: E/AndroIDRuntime(9901): Caused by: androID.content.res.Resources$NotFoundException: Resource is not a Drawable (color or path): TypedValue{t=0x2/d=0x7f010000 a=-1}解决方法 是的,这似乎是一个已知的问题.但有一个解决方法.不要像你描述的那样使用?attr引用的颜色,而是创建几个drawable(尽可能多的颜色),让每个颜色直接调用它们的颜色.在主题级别,根据主题引用drawables本身.它的工作方式.
更新:
在Lollipop上,您可以使用XML对drawable进行着色.要覆盖前Lollipop,您可以简单地为所有相关的drawables调用它(感谢appcompat库的新版本):
public voID setDrawablecolor(Drawable d,int color) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LolliPOP) { d = DrawableCompat.wrap(d); DrawableCompat.setTint(d.mutate(),color); }}总结
以上是内存溢出为你收集整理的android – 无法在drawable中使用引用的颜色(按主题)全部内容,希望文章能够帮你解决android – 无法在drawable中使用引用的颜色(按主题)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)