android 控制按钮各个状态的样式
在定义按钮时,有一个 android:background 属性,通常会直接指定一个图片或一种颜色,比如"@drawable/ic_launcher"或"#36f",但这样指定,会使按钮自始至终都一个样子,不会因为点击而改变~~
那如何更加细致的控制按钮的样式呢~~
这里将介绍一个通用的方法,就是用
android:background 属性可以指定一个xml文件:android:background="@drawable/buttonstyle"
当然,你要在drawable文件夹下创建一个buttonstyle.xml文件。
文件的写法网上也有一些~我把用不到的都删掉了,
<?xml version="1.0" encoding="utf-8"?>
上面一个
android:state_focused--是否是焦点
android:state_pressed--是否被按住
关于这2个属性,我也在网上查过一些资料,千篇一律,讲不清楚,进过尝试才知道,其实很简单~~
当不是焦点,也没有被按下时,显示c6这个颜色
当是焦点,没有被按下时,显示c1这个颜色
当是焦点,同时被按下时,显示c2这个颜色
当不是焦点,却被按下时,显示c3这个颜色
看到这估计有些人就费解了,不是焦点,却被按下,会有这种状态吗?焦点是什么?开始我也疑惑,因为我用的是ME525,全触控的,而焦点只有在用方向键或滚轮控制时才会出现,如果用手直接点击这个按钮,它将直接进入按下状态,则它的按下状态是true,但它的焦点状态是false。如果用方向键操作,那么要按下一个按钮,首先必须把光标移动到按钮上,这时按钮的焦点状态是true,按下状态的false;这时再用确定键按下,他的焦点状态仍然的true,而按下状态变为true。
以上的这种设计,其实是考虑到手机操作的两种模式,一种是普通模式,一种是触摸模式。
普通模式就是先选中,再按下的键盘操作;而触摸模式就是用手直接去点击,这种模式下,按钮的焦点状态始终为false,(不知道文本框会不会还是这样~~)
还有一个值得一提的是,系统运行机制是从上到下来匹配合适的状态,再应用颜色,然后后面的将不再匹配~
网上有人说可以这么写:
这样其实是不行的,结果测试,发现按钮一直是c6颜色。
改成下面的顺序就正常了:
因为如果后面两个状态的条件都不加,系统每次都会无条件的通过这个
这个顺序的改变,就证明了每个
了解了这些,控制起来就格外的得心应手了~~
更多相关文章
- Android 按钮点击切换背景,同时修改文字颜色
- Android实现底部tabbar按钮突出效果
- Android WebView 和 手机后退按钮 的故事
- Android控件之利用selector自定义的带文字的图片按钮
- Android 8.0 SystemUI下拉状态栏快捷开关
- Android的按钮监听事件&自定义回调函数
- Android Alert Dialog解决点击按钮对话框不关闭的问题
- Android使用selector自定义按钮
- Android Nine Patch图片及按钮背景