繁体   English   中英

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

[英]Changing theme of Android Application via CheckBox onClick

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

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语句主体中相应的自定义声明样式? 谢谢您的宝贵时间,感谢您能提供的任何帮助。

为此,您必须在/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

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

代码下面是Checkbox的backgound 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:button作为我们样式的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM