1. 程式人生 > >ListView的Item點選事件無響應

ListView的Item點選事件無響應

listview的item中放了一個RatingBar,導致ListView的item點選事件不能響應,仔細打斷點看了原來是RatingBar截獲了點選事件,RatingBar直接獲取了焦點(點選的是item和RatingBar的重疊區域)關於RatingBar的顯示異常可以參看這篇部落格:RatingBar星星顯示不全或星星圖片被拉伸解決方案


像這種listView的item無響應有很多的類似控制元件都會導致,比如EditText,CheckBox等等,那麼該如何解決呢?
這主要牽涉到了Android的view的事件分發機制,這不是一兩句話就能說清楚的,先看看解決方案
第一種主要是在listView的介面卡中把這些類似的控制元件獲取焦點的方式更改,重寫OnTouchListener等方式,但是這樣做太過於繁瑣,而且這些重寫的機制一旦控制不好就會出現意想不到的bug所以這裡採用第二種

第二種:在ListView的item的根佈局新增descendantFocusability屬性
descendantFocusability有三種值:
beforeDescendants:viewgroup會優先其子類控制元件而獲取到焦點

        afterDescendants:viewgroup只有當其子類控制元件不需要獲取焦點時才獲取焦點

        blocksDescendants:viewgroup會覆蓋子類控制元件而直接獲得焦點

通常我們採用第三種本文就是採用的第三種更改後斷點可以跟蹤到點選事件(點選重合區域)


當然肯定還有其他的很多解決方案,有更好方法的希望能一起進步,大神多多指教啊

相關推薦

js拼接的程式碼事件響應,只需用這個事件監聽就通解決

通過js拼接的動態程式碼做類事件響應的時候,點選事件響應。 只需用這個事件監聽就通解決: $('body').on('click', '.but', function() { }) 拼接的程式碼如下:   $page_str='<div dat

ListView的Item事件響應

listview的item中放了一個RatingBar,導致ListView的item點選事件不能響應,仔細打斷點看了原來是RatingBar截獲了點選事件,RatingBar直接獲取了焦點(點選的是item和RatingBar的重疊區域)關於RatingBar的顯示異常可

解決ViewPager巢狀Fragment內部事件響應問題

之前一直在找關於ViewPager Fragment之間的問題,然後找了很久都不是很理想。感覺都快瘋了,後來找到在老大的指點下找到了一篇文章解決了這個問題,和老大相比找了很久我就絕望了對這個不抱有信心了,老大一開始也不知道,但是他在耐心的找問題,一個一個排除,一種一種方法試

android,NavigationView的事件響應

這是一個小坑,就是你自己的佈局有問題, 在Xml中NavigationView必須位於最下方 : <?xml version="1.0" encoding="utf-8"?> <a

Unity 多Canvas 事件響應

問題 :Canvas在World Space模式下無法接受點選事件 解決辦法: 1.Canvas的EventCamera如果為空,則設定對應Canvas的Camera的Tag為MainCamera 2.指定Canvas的EventCamera為對應的Camera   其

專案可以正常執行但是全部的事件效果,也不拋異常。

今天開發的時候,拷貝了一份自己以前寫的程式碼到現在專案中,可以正常執行,但是有的程式碼不執行,導致一些事件無法響應。也不拋異常,一時無法下手,網上也沒查到原因。最近認為比較兩個專案的差別,發現  複製的這程式碼需要設定application支援。而這個application綁

IE DIV背景透明,事件響應解決方案

IE DIV背景透明,給DIV繫結點選事件,   <span style="color:#000000">$("div").bind("click", function(){ alert('click me.'); });</span> &nb

popupwindow外部區域,事件響應問題

點選外部消失,點選外部其他控制元件不觸發其他事件 // 設定此引數獲得焦點,否則無法點選 pop.setFocusable(true); 2.點選按鈕彈出彈框,點選外部

UITableViewCell事件無法響應問題

   一次手賤,浪費時間一個小時。    UITableView的didSelectRowAtIndexPath在點選cell的時候沒有觸發,無論怎樣除錯就是不行,後來檢視tableview的屬性,發現Selection設定為None,把它設定為SingleSelectio

cocos2d-x中解決事件上層響應,下層不響應

解決方案是重寫一個Layer,加在上下層中間,即可只響應上層事件,阻斷了下層的事件,設定優先順序,程式碼如下 #ifndef _TouchBlockLayer_H_ #define _TouchBlockLayer_H_ class TouchBlockLayer:

android學習之4種事件響應方式

   如題,下面就一一列出對點選事件響應的4種方式: 第一種:內部類的形式: package com.example.dail; import android.net.Uri; import android.os.Bundle; import android.rende

Android 設定了ClickableSpan導致的上層View事件無法響應解決方案

首先感謝此題主及回答的大神提供了思路:點選開啟連結  首先問題是這樣的:如果LinearLayout中包了一個TextView,TextView設定了ClickableSpan,這時如果恰巧LinearLayout和TextView都設定了點選監聽,這時如果點選了Clicka

AndroidStudio下的事件響應

本來是測試自定義Toast,發現 implements View.OnClickListener的Onclick事件怎麼都不響應,開始以為是自定義的問題。結果當然不是;需要clean專案就好了,AndroidStudio的問題還是很多~ @Override

android各種事件響應

1. 如題   在最近專案開發中,我今天是第二次碰到這種情況了,並且這次還浪費了我很久的時間找問題,我很不服。上一次是在一個佈局中,如圖 我對他設定點選事件後,點選一直沒反應,找了很久原因,最後在xml佈局中發現,如圖所示的情況。 我當然想要的是對外面relativela

FloatingActionButton實現事件響應

最近做一個App用到了FloatingActionButton,可是在實現點選事件的時候卻出了點問題。 FloatingActionButton實現點選事件之後,在onClick()函式中實現的程式碼邏輯卻沒有執行,然後就很茫然,這麼簡單的東西怎麼會出錯,然後就找了好久,最後才發現還真的是

8.0通知欄新增通知渠道,及自定義通知 響應事件

今天寫了下demo 發現通知在8.0後有些改變記錄下這個坑!!!! 通知的程式碼大家在網上一搜一大把,我也不廢話 直接上重點。 點擊發送通知,沒有通知顯示,程式碼如下。 日誌資訊 明明走了這行程式碼卻什麼也沒發生,what? 難道寫錯了?,後來查看了資料下才知道是8

recyclerview巢狀GridView去遮蔽後者的事件,而是前者響應事件

無論是標題中的巢狀方式,還是其它列表控制元件之間的巢狀,都適用。 1、在GirdView的所在佈局的根佈局中設定改屬性: android:descendantFocusability="blacksDescendants"  2、動態設定GirdView的如下屬性:   gridvi

Activity中響應ListView內部按鈕的事件

最近交流群裡面有人問到一個問題:如何在Activity中響應ListView內部按鈕的點選事件,不要在Adapter中響應? 對於這個問題,我最初給他的解答是,在Adapter中定義一個回撥介面,在Activity中實現該介面,從而實現對點選事件的響應。 下班後思考了一下,覺得有兩種方式都能

SwitchPreference響應事件

問題背景 需要響應SwitchPreference(CheckBoxPreference的升級版)的點選事件,但是在點選之後,checkbox先變化,然後再彈出我們需要的流程。這個顯然跟使用者體驗有出入了。 使用者一般假設,當我們設定完畢之後,這個checkbox狀態才會改變。

Cell左滑時無法響應左滑按鈕事件的定位

剛開始,開發一個新功能,需要用到左滑編輯,刪除功能。程式碼如下: - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {     //第二組可以