[转]Android中自定义checkbox样式

时间:2023-03-08 17:17:31
[转]Android中自定义checkbox样式

其实很简单,分三步:

1.在drawable中创建文件checkbox_selector.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true"
android:drawable="@drawable/checkbox_ok" /><!--设置选中图片-->
<item android:state_checked="false"
android:drawable="@drawable/checkbox_empty" /><!--设置未选中图片-->
</selector>

2.
在values中创建styles.xml:

<?xml version="1.0" encoding="utf-8"?>

<resources>

  	<style name="MyCheckBox" parent="@android:style/Widget.CompoundButton.CheckBox">

  	 <item name="android:button">@drawable/checkbox_selector</item>

  	 <item name="android:paddingLeft">25.0dip</item>

  	 <item name="android:maxHeight">10.0dip</item>

  	</style>

</resources>

3.
在你的CheckBox中添加属性:

<CheckBox
android:id="@+id/check"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_marginLeft="5dp"
style="@style/MyCheckBox"
/>

搞定!这样就把你的checkbox换成你设置的那两张图片了

1.首先在drawable文件夹中添加drawable文件checkbox_style.xml。

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <selector xmlns:android="http://schemas.android.com/apk/res/android">
  3. <item android:drawable="@drawable/checkbox_pressed" android:state_checked="true"/>
  4. <item android:drawable="@drawable/checkbox_normal" android:state_checked="false"/>
  5. <item android:drawable="@drawable/checkbox_normal"/>
  6. </selector>

2.在values文件夹下的styles.xml文件中添加CustomCheckboxTheme样式。

  1. <style name="CustomCheckboxTheme" parent="@android:style/Widget.CompoundButton.CheckBox">
  2. <item name="android:button">@drawable/checkbox_style</item>
  3. </style>

3.在布局文件中使用CustomCheckboxTheme样式。

  1. <CheckBox
  2. android:id="@+id/select_all"
  3. android:layout_width="wrap_content"
  4. android:layout_height="wrap_content"
  5. style="@style/CustomCheckboxTheme" />

使用到的图片资源

[转]Android中自定义checkbox样式checkbox_normal.png

[转]Android中自定义checkbox样式checkbox_pressed.png

在使用Android的Preference,有时为了让我们的界面更加美观,我们会自定义自己的Preference。今天就主要说一下怎样自定义CheckBoxPreference的CheckBox按钮。

系统默认CheckBoxPreference的CheckBox样式

[转]Android中自定义checkbox样式

自定义后的CheckBox样式

[转]Android中自定义checkbox样式

其实,关键的一步就是指定CheckBoxPreference的android:widgetLayout属性,详细步骤就不说了,下面直接上代码,很简单的。

1./res/xml/my_preference.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
  3. <CheckBoxPreference
  4. android:key="cbp"
  5. android:summaryOff="Off"
  6. android:summaryOn="On"
  7. android:title="CheckBoxPreference"
  8. android:widgetLayout="@layout/my_checkbox" />
  9. </PreferenceScreen>

2./res/layout/my_checkbox.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <CheckBox xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:id="@+android:id/checkbox"
  4. android:layout_width="wrap_content"
  5. android:layout_height="wrap_content"
  6. android:button="@drawable/checkbox_checked_style"
  7. android:clickable="false"
  8. android:focusable="false" />

3./res/drawable/checkbox_checked_style.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <selector xmlns:android="http://schemas.android.com/apk/res/android">
  3. <item android:drawable="@drawable/icon_checkbox_unchecked" android:state_checked="false"/>
  4. <item android:drawable="@drawable/icon_checkbox_checked" android:state_checked="true"/>
  5. </selector>

4.MainActivity.java注意要继承PreferenceActivity

    1. public class MainActivity extends PreferenceActivity {
    2. @Override
    3. public void onCreate(Bundle savedInstanceState) {
    4. super.onCreate(savedInstanceState);
    5. addPreferencesFromResource(R.xml.my_preference);  //这个方法已过时!
    6. }
    7. @Override
    8. public boolean onCreateOptionsMenu(Menu menu) {
    9. getMenuInflater().inflate(R.menu.activity_main, menu);
    10. return true;
    11. }
    12. }