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">

 ottom="6dp">

    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

最好的祝福,

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...