关于切换自定义组件(Button,CheckBox,EditText)被点击或选中时背景的方法


当我们觉得某些组件的样式 不给力的时候(比如Button,CheckBox,EditText),就会想到给这些组件自定义样式了,这里提供简单的两种方法:

一、改背景
比如说Button,我们可以使用ImageButton代替,然后设置它点击时的效果,比如发光啥的
又比如说CheckBox,我们可以自由设置它被选中和未选中时的样式。圆形、方形、三角形 随意了。。
然后是EditText,同样道理。

下面是方法:

首先新建一个xml文件,如下所示:(这是个处理不同动作下,组件需要转换的背景文件)

1、ImageButton背景的切换方法

-----------------------------------------------



android:state_pressed="false"
android:drawable="@drawable/imageview_normal" />

android:state_pressed="true"
android:drawable="@drawable/imageview_pressed" />

android:state_pressed="true"
android:drawable="@drawable/imageview_pressed" />




-----------------------------------------------

使用方法,xml相对应的ImageButton设置属性 android:background="@drawable/上面文件的文件名" ,就可以了


2、CheckBox背景的切换方法

-----------------------------------------------




android:drawable="@drawable/checkbox_selected" />

android:drawable="@drawable/checkbox_unselected" />


-----------------------------------------------

使用方法,xml相对应的ImageButton设置属性 android:button="@drawable/上面文件的文件名" ,就可以了

3、EditText背景切换的方法

-----------------------------------------------




android:drawable="@drawable/edittext_selected" />

android:drawable="@drawable/edittext_unselected" />


-----------------------------------------------

使用方法,xml相对应的ImageButton设置属性 android:background="@drawable/上面文件的文件名" ,就可以了
注:有时编辑框中的文字会在背景图的外面,比如文字在图片所包围的区域左边,这个时候 可以使用 诸如 android:pandingLefg="10dip"的方式,跳转文本的位置


二、设置style
以EditText为例,
首先在res/values目录下新建一个styles.xml的文件,

-----------------------------------------------







---------------------------------------------

注解:my_edittext_style是这个样式的名称 , parent="@android:style/Widget.EditText" 是这个样式所适用的组件名

@drawable/edittext_selector 说明这个样式 是一个背景样式,引用的drawable资源是edittext_selector,恩。这个东西就是我们上面所写的xml文件。。


接着是使用方法:

------------------------------------------------


style="@style/my_edittext_style"

android:text="My EditText"

android:layout_width="fill_parent"

android:layout_height="wrap_content">


--------------------------------------------

效果图:

正常情况。

操作后,



你可能感兴趣的:(android开发)