我是 Android 开发的初学者,虽然编码很有意义,但 android 主题恕我直言
我在执行这个简单的任务时遇到了麻烦:
我有(例如)一种名为“blah”的颜色
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="blah">#F0F0F0</color>
<resources>
它在 XML 布局或代码中随处使用,并被不同的视图组件用作“@color/blah”
我只是想让每个主题的颜色值改变
所以当我使用MyTheme1时,blah应该是#F0F0F0,当我使用MyTheme2时,blah应该是#00FF00
我一直在阅读有关主题的文章,但仍然无法找到如何实现这个简单的任务,因为我的应用程序不需要特殊样式等,只需要每个主题的颜色。
提前感谢
更新:
在 Mohamed_AbdAllah 提供的链接之后,我成功地通过在 attrs.xml 和 styles.xml 中定义它们来创建一些自定义颜色:
attrs.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<attr name="color_item_title" format="color|reference" />
</resources>
样式.xml
<style name="AppBaseThemeDark" parent="android:Theme.Black">
<item name="color_item_title">@color/White</item>
</style>
但是现在出现了一个更严重的问题
我可以在每个视图中成功使用颜色 ?color_item_title,因此按钮和文本实际上会获得该颜色。
但是在自定义可绘制对象或列表视图布局上使用该 ?color_item_title (即在运行时获得膨胀的视图)会导致崩溃。
因此,在 listview listitem 布局中使用 ?color_item_title 会在运行时崩溃,并在该行显示充气消息 :(
它还在我的可绘制对象上崩溃:(再次出现通货膨胀错误)
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<solid android:color="@color/Black" />
<corners
android:bottomLeftRadius="8dp"
android:bottomRightRadius="8dp"
android:topLeftRadius="8dp"
android:topRightRadius="8dp" />
<stroke android:width="1dp" android:color="?color_item_title" />
</shape>