android 中改变按钮按下时的颜色
2013-07-29 15:14
405 查看
大家在开发一定遇到过这样的情况,当选中某个按钮时让它处于高亮显示:下面我们就一起讨论一下:
a、在开发中大家都会遇到这样情况,在一个xxx.xml文件中如果有两个以上的组件有一样的属性功能时,可以把它们共同的内容抽取出来放在styles.xml文件来声明。
然后在相应的组件中可以这样引用 : style="@style/widget_listview"
style标签也可以这样来定义:res-----values------styles.xml
<style name="widget_listview"> <item name="android:layout_width">match_parent</item> <item name="android:layout_height">match_parent</item> <item name="android:layout_weight">1</item> <item name="android:listSelector">@drawable/listview_item_selector</item> <item name="android:divider">@drawable/listview_divider_line</item> <item name="android:dividerHeight">1.0dip</item> <item name="android:fadingEdge">none</item> <item name="android:scrollingCache">false</item> </style>
b、在一个布局中如果有一组按钮在相应的被选中时改变颜色(这组按钮不是数组),此时可以这样定义:在drawable 文件下添加一个selector_btn.xml文件
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_enabled="true" android:drawable="@drawable/frame_button_n"></item> <!-- 正常情况下 --> <item android:state_enabled="false" android:drawable="@drawable/frame_button_p"></item> <!-- 按下时按钮的变化 --> </selector>
在引用时可以直接用 android:background="@drawable/selector_btn" ,注意红色部分的属性,不能写成 state_pressed 这个属性,为了防止界面中重复点击按钮事件,所以在单击按钮时可以这样来传入
articleManager.setOnClickListener(frameArticleBtnClick(articleManager, 1)); /** * @param btn * @param flag * 记录哪个按钮被选中 * @return 当按下相应的按钮时颜色发生变化,并且该按钮处于不可重复点击状态 */ private OnClickListener frameArticleBtnClick(final Button btn, final int flag) { return new OnClickListener() { @Override public void onClick(View v) { if (btn == articleManager) { articleManager.setEnabled(false); } else articleManager.setEnabled(true); if (btn == articleTypeManager) { articleTypeManager.setEnabled(false); } else articleTypeManager.setEnabled(true); currentFlagBtn = flag; } }; }
c.这样就可以显示出按钮高亮的效果了
(2) 对于按钮的操作还有另一种情况:
当按钮获得焦点时,让它改变颜色,当失去焦点时在还原,同样也是在drawable 目录下创建一个 .xml 文件
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/btn_bg_press" android:state_pressed="true"/><!-- 获得焦点时的动作 --> <item android:drawable="@drawable/btn_bg_normal"/><!-- 正常情况下 --> </selector>
在程序中引用时 android:background="@drawable/btn_bg_selector" 即可。
相关文章推荐
- Android 改变单选按钮RadioButton的颜色
- android toolbar 显示返回按钮并改变按钮颜色
- [2015/05/16] 顶栏封装 & Android按钮按下改变颜色
- android 中改变按钮按下时的颜色
- android 按钮按下时改变字体颜色
- Android 点击按钮,文字改变颜色
- 改变Android按钮背景颜色的高效方法
- Android按钮按下的时候改变颜色实现方法
- Android 点击按钮时改变颜色
- Android 按钮按下时改变字体颜色
- Android按钮按下的时候改变颜色实现方法
- Android点击改变按钮颜色的3种效果
- android 按钮按下时改变字体颜色
- 改变Android按钮背景颜色的高效方法
- android 按钮按下时改变字体颜色
- android toolbar navigationicon 改变返回按钮颜色
- Android之简单改变按钮颜色方案
- Android按钮按下的时候改变颜色实现方法
- android 中改变按钮按下时的颜色
- 1. android 设置圆角按钮后,按下按钮后,还能改变按钮的颜色