簡體   English   中英

LinearLayout 上的 onClickListener

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM