簡體   English   中英

使用可點擊的子元素制作整個視圖

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

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