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;
	}
相关文章
相关标签/搜索