从Xml文件访问样式中的项目

时间:2019-07-17 15:29:37

标签: android xml styles

根据用户的喜好将背景色保存在数据库中。应用程序将根据每次打开时选择的背景色打开。我发现最好的方法是按主题进行操作,共有两种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)”。

但是此代码不起作用。我该怎么办?

1 个答案:

答案 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>