RecyclerView常见问题解决方案: RecyclerView嵌套自动滚动;RecyclerView 高度设置wrap_content 无作用等问题

RecyclerView常见问题解决方案: RecyclerView嵌套自动滚动;RecyclerView 高度设置wrap_content 无作用等问题

1,RecyclerView嵌套自动滚动

ScrollView或者RecyclerView1 嵌套RecyclerView2 进入页面自动跳转到recyclerView2上面页面会自动滚动。
貌似是RecyclerView 自动获得了焦点
两种解决办法
一,recyclerview去除焦点
recyclerview.setFocusableInTouchMode(false);
recyclerview.requestFocus();
二,在代码里面 让处于ScrollView或者RecyclerView1 顶端的某个控件获得焦点即可
比如顶部的一个textview
tv_goodsName.setFocusableInTouchMode(true);
tv_goodsName.requestFocus();

2,RecyclerView 高度设置wrap_content 无作用的bug

在listview中这么设置会不显示RecyclerView
解决方案:
这是RecyclerView兼容包的bug,23.2.0后官方已经修复了。
所以直接在gradle里设置用23.2.0及以上的RecyclerView:
compile 'com.android.support:recyclerview-v7:23.2.0'

PS:如果修改后构建时报了其他奇怪的错,可以试试把兼容包也升级一下:
compile 'com.android.support:cardview-v7:23.2.0'
compile 'com.android.support:recyclerview-v7:23.2.0'
compile 'com.android.support:appcompat-v7:23.2.0'
compile 'com.android.support:design:23.2.0'

3,RecycleView GridLayoutManager wrap_content 并嵌套在ScrollView、ListView高度只有一行问题

嵌套RecycleView外包裹一层RelativeLayout,如下:

<ScrollView 
       layout_width="match_parent"
       layout_height="match_parent">
      <LinearLayout
              layout_width="match_parent"
              layout_height="match_parent">
                    <RelativeLayout
                            layout_width="match_parent"
                            layout_height="wrap_content">
                                    <RecycleView
                                            layout_width="match_parent"
                                            layout_height="match_parent"/>
                    </RelativeLayout>
      </LinearLayout>
</ScrollView>

4,RecyclerView 条目布局宽度设置match_parent无效果的问题解决

//这里为了解决recycleview不能撑满全屏的问题,这里layoutManager不管你布局里是否设置,都不准确,所以需要在代码里
//重新设置MATCH_PARENT

        LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity()) {
            @Override
            public RecyclerView.LayoutParams generateDefaultLayoutParams() {
                return new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
                        ViewGroup.LayoutParams.WRAP_CONTENT);
            }
        };
        layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
        xrecyclerview.setLayoutManager(layoutManager);

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 157,679评论 24 688
  • afinalAfinal是一个android的ioc,orm框架 https://github.com/yangf...
    wgl0419阅读 3,721评论 1 8
  • No.10:搏击俱乐部 《搏击俱乐部》是20世纪福斯电影公司于1999年发行的一部悬疑惊悚片,电影改编自恰克·帕拉...
    怀侠阅读 318评论 0 1
  • 在app中,我们经常可以看到评论中带有表情(非emoji),如下图红色框处所示: 这些表情是怎么实现的呢?首先这些...
    言吾許阅读 916评论 0 3
  • 近期我想要企业资金流畅,财务富足,月销售额突破800万,月利润突破100万,所有众生拥有无边无量的财富,拥有像氧气...
    lindacheng2017阅读 44评论 0 0