微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

最好的祝福,

原文地址:https://www.jb51.cc/android/429900.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐