且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Android基础:listview的item点击事件会使里面的Button也出现按压的效果

更新时间:2022-08-29 18:05:15

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

 本文转自demoblog博客园博客,原文链接http://www.cnblogs.com/0616--ataozhijia/archive/2012/11/02/2751731.html如需转载请自行联系原作者


demoblog