Android基础:listview的item点击事件会使里面的Button也出现按压的效果

给listview里面的button设置selector后,当给listview设置listview.setOnitemClickedListener()的时候,里面的button会有press的效果,有两个方案

1:放弃listview的onItemClickedListener()

listview.setOnItemClickedListener(null);

2:使用自定义的Button,判断他的父控件是否press,如果是就把这个事件消耗掉,不向下传递即可,

可用代码如下:


package  com.audiocn.kalaok.widget;
 
import  android.content.Context;
import  android.util.AttributeSet;
import  android.view.View;
import  android.widget.Button;
 
public  class  FixedListButton extends  Button {
 
     public  FixedListButton(Context context) {
         super (context);
     }
 
     public  FixedListButton(Context context, AttributeSet attrs) {
         super (context, attrs);
     }
 
     public  FixedListButton(Context context, AttributeSet attrs, int  defStyle) {
         super (context, attrs, defStyle);
     }
 
     @Override
     public  void  setPressed( boolean  pressed) {
         if  (pressed && getParent() instanceof  View
                 && ((View) getParent()).isPressed()) {
             return ;
         }
         super .setPressed(pressed);
     }

}


原文地址:http://www.cnblogs.com/0616--ataozhijia/archive/2012/11/02/2751731.html

你可能感兴趣的:(android,ListView,button,selector)