子级可点击/父级可点击

时间:2019-06-07 10:05:10

标签: android onclicklistener onlongclicklistener

我有一个FrameLayout,里面有TextView

<FrameLayout
    android:id="@+id/fl_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="?attr/selectableItemBackground">

    <TextView
        android:id="@+id/tv_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:linksClickable="true"
        android:autoLink="email|web|phone"/>
</FrameLayout>

您看到,我的TextView已为电子邮件/网络/电话启用了自动链接。但是我的FrameLayout的代码中有LongClickListener

flContainer.setOnLongClickListener { 
        // some work
    }

但是当我尝试通过子TextView长按父FL时,它不起作用,因为TV截获了点击,并且不允许父获得longclick。 我知道简单的解决方案-只需将相同的longClickListener应用于TextView,但是我在FL上有android:background="?attr/selectableItemBackground",因此当我单击它时它应该具有涟漪效应,但电视会消耗它。有可能做到这一点吗?

1 个答案:

答案 0 :(得分:2)

在您的父级布局中使用android:addStatesFromChildren="true"。如文档中所述,

  

设置此ViewGroup的可绘制状态是否还包括其   儿童绘画状态。例如,用于组   当其子EditText或按钮处于焦点状态时,该对象似乎处于焦点状态。

您可以在这里找到它:

android.view.ViewGroup