给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
本文介绍了解决 ListView 中 Button 的按下效果与点击监听冲突的问题。提供了两种解决方案:一是禁用 ListView 的点击监听;二是使用自定义 Button 判断并阻止事件传递。附带提供了一段实现自定义 Button 的代码。
6488

被折叠的 条评论
为什么被折叠?



