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