点击ListView的item时,避免导致item中的按钮的背景被改动的解决方案

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

现有一种解决方法,使用自定义的Button,判断他的父控件是否pressed,如果是就把这个事件消耗掉,不向下传递即可

代码如下:

 1 import android.content.Context;

 2 import android.util.AttributeSet;

 3 import android.view.View;

 4 import android.widget.Button;

 5 

 6 public class FixedListButton extends Button {

 7 

 8     public FixedListButton(Context context, AttributeSet attrs, int defStyle) {

 9         super(context, attrs, defStyle);

10         // TODO Auto-generated constructor stub

11     }

12 

13     public FixedListButton(Context context, AttributeSet attrs) {

14         super(context, attrs);

15         // TODO Auto-generated constructor stub

16     }

17 

18     public FixedListButton(Context context) {

19         super(context);

20         // TODO Auto-generated constructor stub

21     }

22 

23     @Override

24     public void setPressed(boolean pressed) {

25         // TODO Auto-generated method stub

26         if (pressed && getParent() instanceof View

27                 && ((View) getParent()).isPressed()) {

28             return;

29         }

30         super.setPressed(pressed);

31     }

32     

33 }

 

 

你可能感兴趣的:(ListView)