Android SDK中的非Scroll RecyclerView滚动问题23

我在ScrollView中实现了一个RecyclerView.为了在整个页面上只有一个滚动行为,我实现了NonScrollRecyclerView版本.实施如下:

public class NonScrollRecyclerView extends RecyclerView {
    public NonScrollRecyclerView(Context context) { super(context); }

    public NonScrollRecyclerView(Context context,AttributeSet attrs) {
        super(context,attrs);
    }

    public NonScrollRecyclerView(Context context,AttributeSet attrs,int defStyle) {
        super(context,attrs,defStyle);
    }

    @Override
    public boolean dispatchTouchEvent(MotionEvent ev){

        if(ev.getAction() == MotionEvent.ACTION_MOVE)
            return true;

        return super.dispatchTouchEvent(ev);
    }
}

一旦我将构建和目标设置更新到SDK 23,我就无法滚动包含NonScrollRecyclerView的页面.具体问题是页面滚动正常,直到我到达回收站视图部分,一旦我滚动到此视图,我无法向上或向下滚动.

我不喜欢SDK 22及以下版本

我的xml如下:

XML @ layout / rv包含recycleler视图

Feeds"
        android:layout_marginTop="8dp"/>

  

XML – @ layout / rv

Feeds">

 Feedcount"
        android:textColor="@color/semi_theme_blue"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginLeft="12dp"
        android:layout_centerVertical="true" />

 
最佳答案
不建议在ScrollView中使用RecyclerView和ListView,因为在渲染ScrollView时不会计算元素高度.这意味着,在显示ScrollView时可能不会填充适配器,稍后当RecyclerView收到有关数据更改的通知时(例如,当您初始化适配器时),则无法重新计算元素高度.

这真的是一个痛苦的因为你必须尝试计算元素高度并且它永远不准确,所以当你在ScrollView中显示ListView或RecyclerView时会有差异.可以检查herehere如何计算元素高度的一些示例.

我的建议是将您的RecyclerView转换为LinearLayout并以编程方式添加元素,以便模拟ListView或RecyclerView行为:

LinearLayout layout = (LinearLayout) rootView.findViewById(R.id.files);
layout.removeAllViews();

for (int i = 0; i < fileAdapter.getCount(); i++) {
    final View item = fileAdapter.getView(i,null,null);
item.setClickable(true);

    item.setId(i);

    item.setOnClickListener(new View.OnClickListener() {
        @Override
            public void onClick(View v) {

                fileContentRowPosition = v.getId();

        # Your click action here


    }
});


layout.addView(item);

}

这里是带有文件定义的XML:

可以检查整个java代码here和整个布局here.

另一方面,如果您仍想继续执行实施,并且有关您的问题,可以查看本文关于Handling Scrollable Controls in Scrollview

最好的祝福,

相关文章

以下为个人理解,如错请评 CE: 凭据加密 (CE) 存储空间, 实际路径/data/user_ce/ DE: 设备加密 (DE) 存...
转载来源:https://blog.csdn.net/yfbdxz/article/details/114702144 用EventLog.writeEvent打的日志(或...
事件分发机制详解 一、基础知识介绍 1、经常用的事件有:MotionEvent.ACTION_DOWN,MotionEvent.ACTION...
又是好久没有写博客了,一直都比较忙,最近终于有时间沉淀和整理一下最近学到和解决的一些问题。 最近进...
Android性能优化——之控件的优化 前面讲了图像的优化,接下来分享一下控件的性能优化,这里主要是面向...
android的开源库是用来在android上显示gif图片的。我在网上查了一下,大家说这个框架写的不错,加载大的...