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

你可能感兴趣的:(listview的item点击事件会使里面的Button也出现按压的效果)