android 中改变按钮按下时的颜色

原文出处:http://blog.csdn.net/nmsoftklb/article/details/9087233

 

a、在开发中大家都会遇到这样情况,在一个xxx.xml文件中如果有两个以上的组件有一样的属性功能时,可以把它们共同的内容抽取出来

放在styles.xml文件来声明。

然后在相应的组件中可以这样引用 : style="@style/widget_listview"

style标签也可以这样来定义:res-----values------styles.xml

  1. <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文件
  1. <?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 当按下相应的按钮时颜色发生变化,并且该按钮处于不可重复点击状态
  */
  privateOnClickListener frameArticleBtnClick(finalButton btn,finalint flag){
    returnnewOnClickListener(){
    @Override
    publicvoid 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;
     }
 };
 }

 

 

posted @ 2015-01-08 23:40  咖啡馆的水果拼盘  阅读(583)  评论(0编辑  收藏  举报