問題記錄-如何讓Listview子控件在點擊以後失去點擊事件

如何讓Listview的子控件在點擊以後失去焦點

1.出現的問題

2.嘗試解決的方法

基本都失敗了,部分失效緣由還沒找到,知道的能夠告知下,感謝。。。。。

1.將父佈局設置爲不可點擊android

mLvAppLock.setEnabled(false);

2.將item的子控件設置爲不可點擊,後來發現當你把一個控件設置了點擊事件以後,系統會自動將該控件設置爲可點擊的。
源代碼:佈局

public void setOnClickListener(@Nullable OnClickListener l) {
        if (!isClickable()) {
            setClickable(true);
        }
        getListenerInfo().mOnClickListener = l;
}

另外,在adapter中設置點擊事件,每個控件都會有本身獨立的點擊事件,要對這些控件的點擊事件進行屏蔽與開啓,單個來有些麻煩。動畫

3.設置listview的android:descendantFocusability屬性spa

本身定義listview可能會發生點擊每個item的時候沒有反應,沒法獲取焦點。緣由多半是因爲在咱們本身定義的Item中存在諸如ImageButton,Button,CheckBox等子控件(也能夠說是Button或者Checkable的子類控件),此時這些子控件會將焦點獲取到,因此經常當點擊item時變化的是子控件,item自己的點擊沒有響應。
該屬性是當一個爲view獲取焦點時,定義viewGroup和其子控件二者之間的關係。
屬性的值有三種:code

beforeDescendants:viewgroup會優先其子類控件而獲取到焦點
afterDescendants:viewgroup只有當其子類控件不須要獲取焦點時才獲取焦點
blocksDescendants:viewgroup會覆蓋子類控件而直接得到焦點

mLvAppLock.setDescendantFocusability(ViewGroup.FOCUS_BEFORE_DESCENDANTS);

3.解決方案:

  • 使用FrameLayout佈局包裹一個listview,一個透明的佔滿父佈局的Button
  • 在剛開始的時候讓這個Button隱藏,在點擊了控件以後,想要讓listview失去焦點,就讓那個Button顯示出來搶佔焦點
  • 當咱們想讓Listview繼續獲取焦點的時候,就讓Button再次隱藏便可。
    這裏寫圖片描述

      這裏寫圖片描述

4.最後結果:監聽動畫,結束的時候隱藏遮蓋層

                 這裏寫圖片描述

相關文章
相關標籤/搜索