Android textIsSelectable stops TextView onClick working correctly

339 Views Asked by At

In my current Android application I have a MaterialCardView that wraps a TextView that I wish to be copyable e.g. I use

android:textIsSelectable="true"

However, I also need to know when the MaterialCardView is clicked as its within a RecyclerView Item layout.

My onClickListener for the MaterialCardView is only triggered when I remove the android:textIsSelectable="true" attribute from the child TextView.

here is the complete RecyclerView Item layout

<?xml version="1.0" encoding="utf-8"?>
<com.google.android.material.card.MaterialCardView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/item_bibtext_cardview"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:clickable="true"
    android:focusable="true"
    card_view:cardBackgroundColor="?attr/colorSurface"
    card_view:cardCornerRadius="10dp"
    card_view:cardElevation="5dp"
    card_view:cardPreventCornerOverlap="false"
    card_view:cardUseCompatPadding="true"
    card_view:contentPadding="10dp">

    <TextView
        android:id="@+id/bibtex"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:textIsSelectable="true"
        android:background="?android:attr/selectableItemBackground"
        android:textColor="?android:attr/textColorPrimary" />

</com.google.android.material.card.MaterialCardView>

How can I both detect clicks on the Parent MaterialCardView and have the child TextView selectable?

1

There are 1 best solutions below

1
Daan On BEST ANSWER

In your case (with textIsSelectable="true") the TextView will still trigger an OnClick event. So you could simply add an OnClickListener to your TextView and link that to the existing CardView click behavior.

Would that cover your case?