android – 无法在drawable中使用引用的颜色(按主题)

android – 无法在drawable中使用引用的颜色(按主题),第1张

概述考虑: 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="r 考虑:

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中使用引用的颜色(按主题)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1127473.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存