給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); } }