[英]Make a whole view with sub-elements clickable
我的應用程序中有一個垂直的 LinearLayout,其中每一行都應該有一個更復雜的子視圖,由一個圖像和兩行文本組成。 現在我想讓整個行可點擊以開始其他操作。 這意味着整個事情都應該在點擊時做出反應:包含其他元素、圖像甚至兩行文本的基本視圖。
我的問題:最好的方法是什么? 我不能對完整的行使用簡單的按鈕,據我所知,我不能為視圖/圖像/標簽設置 onClick-Handler?
知道如何做到這一點嗎?
謝謝!
最簡單的選擇是將android:descendantFocusability="blocksDescendants"
放在您的父視圖上,這將阻止任何子視圖從父視圖中獲取點擊,然后僅在父視圖上放置一個點擊監聽器。 這是假設您不關心用戶在父級中點擊了哪個子視圖。
<LinearLayout
android:id="@+id/parent"
...
android:clickable="true"
android:descendantFocusability="blocksDescendants" >
<TextView
... />
<ImageButton
... />
</LinearLayout>
在代碼中:
LinearLayout parent = (LinearLayout) findViewById(R.id.parent);
parent.setOnClickListener(...);
您只需將 xml 中的可點擊標簽 true 添加到您的主視圖,例如 relativelayout 或 linearlayout。 那可行
我就是這樣做的。 只需遍歷孩子並使其不可點擊。 即使您在根視圖中使用可點擊項目,這也有效。
rootView.apply {
descendantFocusability = ViewGroup.FOCUS_BLOCK_DESCENDANTS
isClickable = true
setOnClickListener {
Snackbar.make(it, "$data", Snackbar.LENGTH_LONG).show()
}
children.forEach {
it.isClickable = false
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.