android listview和button,ImageButton等有事件的控件的總結

    public ImageButton(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        setFocusable(true);
    }

 

  在listview中(或者ExpandableListview),item的view會被進行特殊的處理,經過convertview能夠減小解析xml文件,提升效率。可是若是你本身解析一次,而後用變量保存,那麼只有最後一個view才能正常顯示,說明了每個item的view都是不一樣的實例,這樣就註定了每個view事實上是能夠添加按鈕之類的單獨響應事件的。java

 

  有這麼幾種方法避免Button或者ImageButton搶奪整個item的焦點android

  

  1. Button設置focusable=false,ImageButton要經過代碼設置ib.setFocusable(false),這是由於源碼的bug
    public ImageButton(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        setFocusable(true);
    }

 

  2. 在item的layout的根viewgroup中設置android:descendantFocusability="blocksDescendants",這個屬性也會使其餘的view能響應焦點ide

 

  可是在實際開發過程當中,我發現若是是ExpandableLisview的BaseExpandableListAdapter中的isChildSelectable方法覆寫以後得返回true,不然也不能響應ItemClickxml

	@Override
	public boolean isChildSelectable(int groupPosition, int childPosition) {
		return true;
	}
相關文章
相關標籤/搜索