I have a RecyclerView
with the row layouts having some clickable TextView
elements that have the background set to ?attr/selectableItemBackground
.
The issue I'm facing is that the background ripple selector gets triggered when we are scrolling the RecyclerView, irrespective of the location of touch-n-scroll action. Here's a video that demonstrates this issue (-It was taken on emulator, hence a bit janky): https://i.sstatic.net/lsiH6.jpg -See the ripple getting triggered for X Comments
& X Views
Things I've tried:
selectableItemBackground
but the behaviour remains the same.My questions:
Like
and Comment
button seen in the above link), but it happens only for the 2 views demonstrated.Thanks in advance!
EDIT: Adding layout-XML just for the part that contains the views which have the ripple triggered. This gets included in other layouts which are used for the row (I've also tried to have this code directly in the layouts as well without using 'include' but that doesn't change anything in the behavior):
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="@id/id_separator">
<androidx.appcompat.widget.LinearLayoutCompat
android:id="@+id/id_likes"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:paddingStart="@dimen/_20sdp"
android:gravity="start|center"
android:background="?attr/selectableItemBackground" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/id_comments"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:includeFontPadding="false"
android:singleLine="true"
android:textAllCaps="false"
android:textStyle="normal"
android:textSize="@dimen/_12ssp"
android:background="?attr/selectableItemBackground"
tools:text="12 Comments" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/id_views"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:paddingEnd="@dimen/_20sdp"
android:drawablePadding="@dimen/_3sdp"
android:gravity="end|center"
android:includeFontPadding="false"
android:singleLine="true"
android:textAllCaps="false"
android:textStyle="normal"
android:textSize="@dimen/_12ssp"
android:background="?attr/selectableItemBackground"
tools:text="12 Views"
tools:visibility="visible" />
</androidx.appcompat.widget.LinearLayoutCompat>
<View
android:id="@+id/id_separator"
android:layout_width="0dp"
android:layout_height="@dimen/_1sdp"
android:background="#1F000000"
android:layout_marginTop="@dimen/_30sdp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
Update: I was able to resolve this - just leaving the answer here for anyone who encounters a similar issue.
The problem was that the on-click listeners for the 2 views which were having this issue, were commented out from the code as the specific actions for those were deferred to a future release. In the current version, we just wanted the action to behave as if the parent is clicked. So, we simply commented their listeners so that the parent handles the click-event.
To give an effect of the views still being clickable, we had still left in the 'selectableItemBackground' attribute, which was getting triggered whenever the recycler view-item got a touch event. Just adding a click-listener & calling parent.performClick() fixed the issue.