區分listview的item和Button的點擊事件


 

這兩天修改領導通的ListView widget,在ListView中加入Button這類的有 “點擊” 事件的widget,發現原來listview的itemclick居然失效了,
后來在網上查資料終於得以解決。
 
ListView 和 其它能觸發點擊事件的widget無法一起正常工作的原因是加入其它widget后,ListView的itemclick事件將無法觸發,被其它widget的click事件屏蔽。
 
解決辦法:
在item中,包含button的item的Layout中加入屬性 android:descendantFocusability= "blocksDescendants"
在buttion的屬性加入android:focusable="false"
 
問題解決,兩個click事件不再沖突了!
====================
 
ListView的 setOnItemClickListener事件和ListView中Item中包含的子控件(比如button)的click事件共存的解決辦法:
在ListView的item的xml配置文件的根節點添加屬性
android:descendantFocusability="blocksDescendants"
並且,在要添加事件的子控件(如button)的屬性里添加 android:focusable="false"
另外,注意:有時現成的幾個adapter滿足不了要求,此時就需要繼承自BaseAdapter。

下面我是程序中的部分代碼,該布局文件時listview中的item的布局,

listview_listitem_layout.xml   代碼如下:

<RelativeLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  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>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM