[英]onClickListener on a LinearLayout
我想實現的功能有點問題。
我有一個LinearLayout
,包含 2 TextViews
。 我想在它上面設置一個onClickListener
,以便它的行為就像ListView
一個項目。
我已經嘗試了一些可能的實現,並使用LinearLayout
的 xml 屬性android:onClick
讓它工作。
由於我希望應用程序對LinearLayout
上的單擊做出直觀反應(如在ListView
),因此我將其放在偵聽器回調方法中:
l.setBackgroundColor(android.R.drawable.list_selector_background);
l 是一個LinearLayout
對象,用findViewById()
初始化;
每當我嘗試單擊布局時,應用程序都沒有響應。 我試圖通過 Toast 消息顯示替換回調方法中的代碼,並且它有效,所以我猜問題出在setBackgroundColor
。
有沒有人熟悉這個?
PS:抱歉,我現在不能發布更多代碼,我正在工作。
您必須在 xml 布局文件中設置LinearLayout
屬性android:clickable="true"
或在 java 活動代碼中setClickable(true)
。
我注意到,只要 LinearLayout 中的任何子元素具有 android:textIsSelectable="true" 屬性,上面的所有建議都沒有幫助。
我發現 setClickable(true) 仍然會導致點擊轉到線性布局的子項。 我發現要讓 LinearLayout 捕獲觸摸而不是它的子類,我必須覆蓋 dispatchTouchEvent 方法,因此我為此創建了 LinearLayout 的子類。 雖然看起來像一個丑陋的解決方案。
你應該將LinearLayout的focusable設置為true,將所有子視圖的focusable設置為false,不要使用android:clickable="true",但是你看不到linelayout的點擊效果。 順便說一句,最好的方法是實現 onTouchEvent api。
android:clickable="true" 在一種條件下完美運行。 您必須將 LilnearLayout 中的孩子放入 android:clickable="false"。
有同樣的問題,我已經嘗試了一個小時的所有答案,但沒有一個奏效。
然后我意識到我只需要將我的 LinearLayout 提升到布局的底部,因為其他視圖阻止了它,然后它就可以工作了,而無需向布局添加任何特殊屬性。
把它放在這里以防有一天它可能對某人有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.