我寻找谷歌并继续争取搜索关键字,但仍然没有。
我想要的是:
<style name="Theme.DefaultWhite" parent="@android:style/Theme.DeviceDefault">
<item name="android:background">#ffffffff</item>
<item name="MyCustomBackground">#33ffffff</item>
</style>
<style name="Theme.DefaultBlue" parent="@android:style/Theme.DeviceDefault">
<item name="android:background">#ffffffff</item>
<item name="MyCustomBackground">#3388ffff</item>
</style>
并将项目设置为指定(其他使用Android默认设置)视图。
<ImageView>
id = "@+id/NNI_ivCards"
background="@style/MyCustomBackground"
</ImageView>
<ImageView>
id = "@+id/NNI_ivBarRoot"
</ImageView>
NNI_ivCards ImageView
必须按主题更改背景颜色, NNI_ivBarRoot 不会按主题更改。
我需要风格化的自定义资源,它根据主题改变了它的价值。
如果Android设计的不是在样式中添加额外的自定义值,我需要尽可能短的Java代码。
答案 0 :(得分:1)
所以,
此代码可以通过更改主题来更改颜色(任何颜色)。
首先,您必须向style.xml
添加2个样式,如下所示:
<style name="DefaultTheme" parent="Theme.AppCompat.Light.DarkActionBar">
</style>
<style name="CustomTheme" parent="Theme.DefaultTheme" >
</style>
这里只添加 DefaultTheme 和 CustomTheme ,现在转到manifest.xml
并将此行android:theme="@style/DefaultTheme"
添加到应用< / em>标签:
<application
android:theme="@style/DefaultTheme"
...>
创建名为attrs.xml
的新xml文件并添加以下代码:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<attr name="color1" format="color" />
<attr name="color2" format="color" />
</resources>
回到样式并添加这些颜色:
<style name="DefaultTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="color1">#FFFFFF</item>
<item name="color2">#FFFFFF</item>
</style>
<style name="CustomTheme" parent="Theme.DefaultTheme" >
<item name="color1">#33ffffff</item>
<item name="color2">#3388ffff</item>
</style>
现在你有2个主题,在 DefaultTheme color1和color2是#FFFFFF,在 CustomTheme color1是#33ffffff,color2是#3388ffff
转到您的imageView并添加此颜色:
<ImageView>
android:id = "@+id/NNI_ivCards"
android:background="?attr/color1"
</ImageView>
更改主题,您必须在setTheme(R.style.DefaultTheme);
方法setContentView()
方法之前调用onCreate()
,因此您的活动应如下所示:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTheme(R.style.CustomTheme);
setContentView(R.layout.main_activity);
....
}