Android基礎: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);
	}
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM