Android Listview和GridView Item中的Button、CheckBok子控件焦点问题



  在Android中通常默认能获得焦点的控件有Button,Checkable继承来的所有控件,这就意味着如果你的ListView的Item中如果有Button或者Checkable的子类控件的话,那么默认的焦点是交给子控件,而ListView的Item能被选中的基础是它能获取焦点,所以item中的Button、CheckBox子控件的focus必须为false,这样item才能获取onItemClick事件,(RatingBar中有个 isIndicator属性表示RatingBar是否是指示用的,应该设为true,不然也获取不到焦点)。


解决步骤 : 
1. 将GridView或者ListView的Item Layout的子控件(比如Button、CheckBox) 的focusable属性设置为false  

2. 对Item Layout的根控件(比如ListView、GridView) android:descendantFocusability="blocksDescendants"

如下示例 : 

[html]  view plain copy
  1. <RelativeLayout  
  2.  xmlns:android="http://schemas.android.com/apk/res/android"  
  3.  android:orientation="vertical"  
  4.  android:layout_width="match_parent"  
  5.  android:layout_height="wrap_content"  
  6.  android:padding="8dip"  
  7.  android:background="#ffffffff"  
  8.    android:descendantFocusability="blocksDescendant >  
  9.   <LinearLayout  
  10.       <RatingBar   
  11.           android:id="@+id/rb_bookRating"  
  12.           android:layout_width="wrap_content"  
  13.           android:layout_height="wrap_content"  
  14.           android:rating="2.0"  
  15.           style="@style/RatingBar"  
  16.           android:isIndicator="true"  
  17.       />  
  18.   </LinearLayout>  
  19.       <Button   
  20.           android:id="@+id/btn_schedule"  
  21.           android:layout_width="wrap_content"  
  22.           android:layout_height="wrap_content"  
  23.           android:layout_alignParentRight="true"  
  24.           android:layout_centerVertical="true"  
  25.          android:focusable="false"  
  26.           android:text="查看"  
  27.     style="@style/Button"  
  28.   />  
  29. </RelativeLayout>  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值