listview 点击列表项时,项中的Button会触发点击效果

开发中,难免会在列表项中, 加入Button ,而button通常都有点击的效果。大家都会发现,点击列表项时,button会被触发点击效果,这样显示不合理。如何解决此问题呢。
其实发生这个现象的问题,是点击父类列表项时,会把响应传递给子类。只要子类不去响应父类的点击事件就行。

这里重写一个Button类。

package com.netqin.antivirus.securityreport;

import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.widget.Button;

/**
 * Created with IntelliJ IDEA.
 * User: zhengdianfang
 * Date: 13-6-5
 * Time: 下午7:13
 */
public class SecurityReportItemButton extends Button{
    public SecurityReportItemButton(Context context) {
        super(context);
    }

    public SecurityReportItemButton(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public SecurityReportItemButton(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)