* 原来在代码中多了这个。百思不得骑姐
*以前是被代码直接覆盖住了子控件的焦点因此edittext不能拿到焦点
* android:descendantFocusability="blocksDescendants" //会覆盖子类控件而直接得到焦点 android:focusable="false"
* 常常父控件子控件都须要焦点的时候设置第一条属性,而后子控件在代码在主动要求获取焦点
* android:descendantFocusability="beforeDescendants" //会优先其子类控件而获取到焦点
* android:descendantFocusability="afterDescendants" //只有当其子类控件不须要获取焦点时才获取焦点
* android:descendantFocusability="blocksDescendants"android
ListView widget,在ListView中加入Button这类的有 “点击” 事件的widget,发现原来listview的itemclick竟然失效了,ListView 和 其它能触发点击事件的widget没法一块儿正常工做的缘由是加入其它widget后,ListView的itemclick事件将没法触发,被其它widget的click事件屏蔽。布局
解决办法:spa
在item中,包含button的item的Layout中加入属性 android:descendantFocusability= "blocksDescendants"xml
在buttion的属性加入android:focusable="false"继承
问题解决,两个click事件再也不冲突了!事件
====================ip
ListView的setOnItemClickListener事件和ListView中Item中包含的子控件(好比button)的click事件共存的解决办法:
在ListView的item的xml配置文件的根节点添加属性
android:descendantFocusability="blocksDescendants",
而且,在要添加事件的子控件(如button)的属性里添加android:focusable="false"
另外,注意:有时现成的几个adapter知足不了要求,此时就须要继承自BaseAdapter。
下面我是程序中的部分代码,该布局文件时listview中的item的布局,
listview_listitem_layout.xml 代码以下:get
<RelativeLayoutit
xmlns:android="http://schemas.android.com/apk/res/android"io
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:descendantFocusability="blocksDescendants"
style="@style/ListItem">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone" />
<ImageView
android:layout_width="45dip"
android:layout_height="45dip"
android:layout_gravity="center"
android:layout_alignParentLeft="true"
android:background="@drawable/imageview_background"
android:scaleType="fitXY" />
<Button
android:layout_width="@dimen/btn_attention_width"
android:layout_height="@dimen/btn_attention_height"
android:layout_alignParentRight="true"
android:background="@drawable/button_selector_gradient"
android:text="关注"
android:focusable="false"/>
</RelativeLayout>