根据用户的喜好将背景色保存在数据库中。应用程序将根据每次打开时选择的背景色打开。我发现最好的方法是按主题进行操作,共有两种Styles.xml文件中的主题。
<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="selectedBackgroundColor">#fff</item>
</style>
<!-- Base application theme. -->
<style name="DarkTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="selectedBackgroundColor">#000</item>
</style>
</resources>
在.java中:
public void onCreate(Bundle savedInstanceState) {
if ( isUserSelectedBackground == true ) {
setTheme(R.style.DarkTheme);
}
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
activity_main.xml中的
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/viewMain"
android:background="?attr/selectedBackgroundColor"
android:layout_width="match_parent"
android:layout_height="match_parent">
</RelativeLayout>
错误: 错误:样式属性'attr / selectedBackgroundColor(aka com.myapp:attr / selectedBackgroundColor)”。
但是此代码不起作用。我该怎么办?
答案 0 :(得分:0)
您需要在attrs.xml
目录中拥有values
文件。如下所示,将selectedBackgroundColor
attr添加到此文件。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="customAttr">
<attr name="selectedBackgroundColor" format="color"/>
</declare-styleable>
</resources>