通过CheckBox onClick更改Android应用程序的主题

时间:2015-05-14 07:10:15

标签: java android checkbox styles

我是一名新的Android开发人员,我正在开发一个项目,我希望在我的某个应用程序的设置中将自定义颜色主题作为选项。我有四个复选框,称为checkBox1,checkBox2,checkBox3,checkBox4。我的styles.xml文件中还有四个自定义样式,称为theme1,theme2,theme3,theme4。这是关于处理这些CheckBox的onClick的我的.java文件编码:

checkBoxListener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(blueCheckBox.isChecked()){
                //Change theme to blue
            }
            if(redCheckBox.isChecked()){
                //Change theme to red
            }
            if(greenCheckBox.isChecked()){
                //Change theme to green
            }
            if(bwCheckBox.isChecked()){
                 //Change theme to Black & White
            }
        }
    };
    blueCheckBox.setOnClickListener(checkBoxListener);
    redCheckBox.setOnClickListener(checkBoxListener);
    greenCheckBox.setOnClickListener(checkBoxListener);
    bwCheckBox.setOnClickListener(checkBoxListener);
}

如何将整个应用程序的样式设置为我在这些if语句的主体中的相应自定义声明样式?感谢您的时间,感谢您提供的任何帮助。

2 个答案:

答案 0 :(得分:2)

为此,您必须在/style/

下创建一些主题

例如:

<resources>
    <style name="LightTheme" parent="@android:style/Theme.Light">
    </style>

    <style name="BlackTheme" parent="@android:style/Theme.Black">
    </style>    
</resources>

在java方面你可以像......一样使用它。

if (lightThemeCheckBox.isChecked()) {
    getApplication().setTheme(R.style.LightTheme);
} else {
    getApplication().setTheme(R.style.BlackTheme);
}

我希望这会对你有所帮助。

更多访问此链接: http://www.anddev.org/applying_a_theme_to_your_application-t817.html

答案 1 :(得分:0)

您好您可以通过将CheckBox的背景设置为以下来为Checkbox提供按钮:

代码下方是Checkbox的背景xml文件:名称为checkbox_selection.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:drawable="@drawable/check_active_320" android:state_checked="true" android:state_focused="true"/>
<item android:drawable="@drawable/check_inactive_320" android:state_checked="false" android:state_focused="true"/>
<item android:drawable="@drawable/check_inactive_320" android:state_checked="false"/>
<item android:drawable="@drawable/check_active_320" android:state_checked="true"/>

在这里,您发现当用户在CheckBox上选中时,有一个可绘制的资源,例如check_active_320,而没有选中Checkbox的check_inactive_320.

将上述xml设置为CheckBox的代码如下:

 <CheckBox
        android:id="@+id/radioread"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/textread"
        android:layout_alignBottom="@+id/textread"
        android:layout_alignParentRight="true"
        android:layout_marginRight="15dp"
        android:button="@drawable/checkbox_selection"
        android:focusable="false" />

在这里你可以找到android:按钮作为我们风格的价值。