Android——RecyclerView宽高自适应填充

基础知识

  • GridLayoutManager 继承于 LinearLayoutManager,是 RecyclerView 的布局管理器,主要为了实现宫格布局。
  • GridLayoutManager.setOrientation(GridLayoutManager.VERTICAL)HORIZONTAL 可以设置 RecyclerView 的延展方向,VERTICAL 便是指纵方向延展。
  • new GridLayoutManager(this, row)setSpanCount(row) 可以设置 RecyclerView 的行列数,具体是行还是列,需要看 setOrientation(),是 VERTICAL 便是指行数。
GridLayoutManager gridLayoutManager = new GridLayoutManager(this, column);
gridLayoutManager.setOrientation(GridLayoutManager.VERTICAL);
recyclerView.setLayoutManager(gridLayoutManager);

单方向自适应填充

  • setOrientation(GridLayoutManager.VERTICAL) + layout_width="match_parent" 可以让RecyclerView在横方向宽度自适应;
  • setOrientation(GridLayoutManager.HORIZONTAL) + layout_height="match_parent" 可以让RecyclerView在纵方向高度自适应;

宽高双方向自适应填充(我怎么这么贱呢,方法那么多,非得用RecyclerView)

  • setOrientation(GridLayoutManager.VERTICAL) + layout_width="match_parent" 为例,此时横方向为自适应,纵方向无限延展

在这里插入图片描述

  • 将 Item 的 android:layout_height 设置为 "match_parent"
  • 自定义 LinearLayout(我的每个Item都是一个 LinearLayout,以此举例),编写 onMeasure 方法
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    
    
    int newHeightMeasureSpec = MeasureSpec.makeMeasureSpec(MeasureSpec.getSize(heightMeasureSpec) / line, EXACTLY);
    super.onMeasure(widthMeasureSpec, newHeightMeasureSpec);
}
  • 这里的 line 就是行数
  • 修改XML中的 LinearLayout 为 自定义的即可,效果如下

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_36881363/article/details/105813441
今日推荐