给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