ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

android – 对RecyclerView的RIpple效果不适用于轻拍

2019-08-28 14:25:39  阅读:220  来源: 互联网

标签:ripple android android-recyclerview recyclerview-layout


我试图在我的RecyclerView上实现涟漪效应.这是我的布局:

<android.support.v7.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:card_view="http://schemas.android.com/apk/res-auto"
        android:id="@+id/card"
        android:layout_marginTop="7dp"
        android:layout_marginLeft="16dp"
        android:layout_marginRight="16dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        card_view:cardCornerRadius="5dp"
        android:clickable="true"
        card_view:cardElevation="5dp"
        android:focusable="true"
        android:foreground="?android:attr/selectableItemBackground">

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:padding="16dp">

                <TextView
                    //some properties />

                <TextView
                    //some properties />

                <TextView
                    //some properties />
            </LinearLayout>

    </android.support.v7.widget.CardView>

为了实现onclick监听器,我基本上遵循了这个教程:http://sapandiwakar.in/recycler-view-item-click-handler/

问题是由于线条产生的涟漪效应:

android:clickable="true"
android:focusable="true"
android:foreground="?android:attr/selectableItemBackground"

没有工作在光(也就是说快速)按下.当我快速点击屏幕时,会触发点击监听器.这意味着已检测到触摸事件,但没有显示波纹效果.如果我想看到涟漪效应,我必须在释放之前保持一段时间更长的屏幕压力.

有没有办法纠正这种行为,即使是快速按下也会显示涟漪效应?

解决方法:

我遇到了类似的问题.我在RecyclerView上有一个ItemClickListener,在那个监听器中我推了一个新片段.通过反复试验,我注意到删除或清空项目点击监听器每次都会显示突出显示,即使在轻敲时也是如此.

解决方法是更改​​我的onItemClick方法:

@Override
public void onItemClick(final RecyclerView parent, final View view, final int position, final long id)
{
    ViewCompat.postOnAnimationDelayed(parent, new Runnable()
    {
        @Override
        public void run()
        {
            // Your click code goes here
        }
    }, 50);
}

这会将您的点击操作推迟到下一个动画步骤后50ms,并在您执行单击操作之前为动画提供足够的时间来加载和运行.

标签:ripple,android,android-recyclerview,recyclerview-layout
来源: https://codeday.me/bug/20190828/1752207.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有