1. 程式人生 > >android:descendantFocusability用法簡析

android:descendantFocusability用法簡析

    開發中很常見的一個問題,專案中的listview不僅僅是簡單的文字,常常需要自己定義listview,自己的Adapter去繼承BaseAdapter,在adapter中按照需求進行編寫,問題就出現了,可能會發生點選每一個item的時候沒有反應,無法獲取的焦點。原因多半是由於在你自己定義的Item中存在諸如ImageButton,Button,CheckBox等子控制元件(也可以說是Button或者Checkable的子類控制元件),此時這些子控制元件會將焦點獲取到,所以常常當點選item時變化的是子控制元件,item本身的點選沒有響應。

    這時候就可以使用descendantFocusability來解決啦,API描述如下:

android:descendantFocusability

Defines the relationship between the ViewGroup and its descendants when looking for a View to take focus.

Must be one of the following constant values.

該屬性是當一個為view獲取焦點時,定義viewGroup和其子控制元件兩者之間的關係。

屬性的值有三種:

        beforeDescendants:viewgroup會優先其子類控制元件而獲取到焦點

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

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

通常我們用到的是第三種,即在Item佈局的根佈局加上android:descendantFocusability=”blocksDescendants”的屬性就好了,至此listview點選的靈異事件告一段落。心得:遇到不會不懂的地方除了網上查詢資料之外,也可以多多去嘗試每種屬性的作用,多閱讀官方文件(我始終覺得還是讀原文的比翻譯的理解的會更好)。

相關推薦

子父控制元件獲取焦點問題:android:descendantFocusability用法

開發中很常見的一個問題,專案中的listview不僅僅是簡單的文字,常常需要自己定義listview,自己的Adapter去繼承BaseAdapter,在adapter中按照需求進行編寫,問題就出現了,可能會發生點選每一個item的時候沒有反應,無法獲取的焦點。原因多半是由於在你自己

EditText無法獲取焦點 獲取焦點無法編輯(android:descendantFocusability用法

android:descendantFocusability用法簡析 開發中很常見的一個問題,專案中的listview不僅僅是簡單的文字,常常需要自己定義listview,自己的Adapter去繼承BaseAdapter,在adapter中按照需求進行編寫,問題就出現了,可

android:descendantFocusability用法

    開發中很常見的一個問題,專案中的listview不僅僅是簡單的文字,常常需要自己定義listview,自己的Adapter去繼承BaseAdapter,在adapter中按照需求進行編寫,問題就出現了,可能會發生點選每一個item的時候沒有反應,無法獲取的焦點。原因

Android的PowerManager和PowerManager.WakeLock用法

之前的一個社群PDA專案在採集使用者座標這個功能的時候,需要保持螢幕常亮,面對未涉及過的東西,網路是最好的學習工具,便去找相關的資料,發現原來可以使用PowerManager.WakeLock來實現要求的功能,以下的文字部分轉載自網路上的一篇有關部落格,感覺寫的還比較清楚

C# 線程池ThreadPool的用法

可見 https sdn 而是 plain call 計時器 最大線程數 water https://blog.csdn.net/smooth_tailor/article/details/52460566 什麽是線程池?為什麽要用線程池?怎麽用線程池? 1. 什

Android音訊驅動

指核心驅動程式,包括硬體相關的程式碼和一些公共程式碼,非常龐大,程式碼總量達數十萬行;alsa-libs指使用者空間的函式庫,提供給應用程式使用,應用程式應包含標頭檔案asoundlib.h,並使用共享庫libasound.so;alsa-utils包含一些基於ALSA的用於控制音效卡的應用程式,如alsac

Oracle行級鎖的特殊用法

Oracle有許多的鎖,各種鎖的效用是不一樣的。下面重點介紹Oracle行級鎖,Oracle行級鎖只對使用者正在訪問的行進行鎖定。可以更好的保證資料的安全性。  如果該使用者正在修改某行,那麼其他使用者就可以更新同一表中該行之外的資料。  Oracle行級鎖是一種排他鎖,防止其他事務修改此行,但是不會阻止讀

torch.gather() 和torch.sactter_()的用法

torch.gather(input, dim, index, out=None)  和 torch.scatter_(dim, index, src)是一對作用相反的方法 先來看torch.gather, 核心操作其實就是這樣: out[i][j][k] =

Android Vold 架構

Voldignores any lines in the unified fstab that do not include thevoldmanaged= flag in this field. Thisflag must be followed by a label describing the car

Qualcomm Android camera 架構及如何debug

              Qualcomm Android camera 架構簡析及如何debug 一. Camera模組(CCM)介紹: CCM一般包含四大件: 鏡頭(lens)、感測器(sensor)、軟板(FPC)、影象處理晶片(DSP):   C

Android屬性動畫

簡析 大家知道,我們在開發一款產品的時候為了達到良好的使用者體驗,我們可以在應用中適當的加上一些動畫效果,譬如平移、縮放、旋轉等等,但是這些常用的動畫在Android很早期的版本中就存在了,我們稱之為傳統動畫,傳統動畫一般分為Tween動畫和Frame動畫,這也是我們最常用

Android熱補丁技術—dexposed原理(阿里Hao)

本文由嵌入式企鵝圈原創團隊成員、阿里資深工程師Hao分享。上篇文章《Android無線開發的幾種常用技術》我們介紹了幾種android移動應用開發中的常用技術,其中的熱補丁正在被越來越多的開發團隊所使用

Android的IPC機制(七)—— Socket的原理與使用

綜述   在前面的幾篇文章中,我們介紹了許多在Android中有關程序間通訊的方式,但都是在一個裝置上進行的程序間通訊,而這時候我們兩個應用在不同的裝置上的時候,在這個時候我們就不能通過前方介紹的那些方法來解決了。但是我們通過網路進行通訊來處理這個問題。今天就

Android App 的啟動過程

首先,在APK檔案安裝的時候,PackageManager會解析APK中重要的AndroidManifest.xml檔案,你在AndroidManifest.xml中註冊過的所有Activity和Service等四大元件的資訊,也就會在此刻被PM獲取到並存儲起來。 當你在

Android事件派發機制

Android控制元件的Listener事件觸發順序是先觸發onTouch,其次onClick。 如果控制元件的onTouch返回true將會阻止事件繼續傳遞,返回false事件會繼續傳遞。 在View的觸控式螢幕傳遞機制中通過分析dispatchTo

Android Design Support Library--FloatingActionButton記錄

Android Design Support Library–FloatingActionButton簡析記錄 最近在看FloatingActionButton的使用,FloatingActionButton的呼叫還是很簡單的,先看看下邊的程式碼。 mFloatBtn

Android Design Support Library(一)--TextInputLayout

2015年google IO大會上介紹的Android Design Support Library庫中的八個新控制元件,今天學習了TextInputLayout的簡單使用。 在使用Android Design Support Library庫的時候,只是找到了如何在android su

Android 單例模式幾種實現方式及

一.定義: 確保某一個類只有一個例項,而且自行例項並向整個系統提供這個例項 二.使用場景: 避免產生過多的物件消耗過多的資源,或者某種型別的物件只應該有且只有一個。例如,建立一個物件需要消耗的資源過多,如訪問資料庫或者IO 資源。 三.實現單例模式的關鍵

Android ART執行環境下Image檔案格式

可以通過閱讀程式碼來幫助分析Image檔案的格式。 首先,在art\runtime\Image.h檔案中,有相關的定義: byte magic_[4]; byte version_[4]; // Required base address for mapping the

Android】三種工廠模式

簡單介紹三種工廠模式:簡單工廠模式,工廠方法模式,抽象工廠模式 1.簡單工廠模式 這是一個小工廠,什麼都由自己生產,別人要什麼就呼叫自己的相應工具去生產 具備三個特徵:具體工廠A,具體生產工具B,抽象生產物件C 就是 A呼叫工具B去生產C