RecyclerView自适应高度
来源:互联网 发布:mac双系统os不能启动 编辑:程序博客网 时间:2024/05/16 06:06
package com.shcc.microcredit.utils;import android.content.Context;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.view.View;import android.view.ViewGroup;public class Mylayout extends LinearLayoutManager {/* private static final int CHILD_WIDTH = 0; private static final int CHILD_HEIGHT = 1; private static final int DEFAULT_CHILD_SIZE = 100; private final int[] childDimensions = new int[2]; private int childSize = DEFAULT_CHILD_SIZE; private boolean hasChildSize;*/ @SuppressWarnings("UnusedDeclaration") public Mylayout(Context context) { super(context); } @SuppressWarnings("UnusedDeclaration") public Mylayout(Context context, int orientation, boolean reverseLayout) { super(context, orientation, reverseLayout); } private int[] mMeasuredDimension = new int[2]; @Override public void onMeasure(RecyclerView.Recycler recycler, RecyclerView.State state, int widthSpec, int heightSpec) { final int widthMode = View.MeasureSpec.getMode(widthSpec); final int heightMode = View.MeasureSpec.getMode(heightSpec); final int widthSize = View.MeasureSpec.getSize(widthSpec); final int heightSize = View.MeasureSpec.getSize(heightSpec); int width = 0; int height = 0; for (int i = 0; i < getItemCount(); i++) { try { measureScrapChild(recycler, i, widthSpec, View.MeasureSpec.makeMeasureSpec(i, View.MeasureSpec.UNSPECIFIED), mMeasuredDimension); } catch (IndexOutOfBoundsException e) { e.printStackTrace(); } if (getOrientation() == HORIZONTAL) { width = width + mMeasuredDimension[0]; if (i == 0) { height = mMeasuredDimension[1]; } } else { height = height + mMeasuredDimension[1]; if (i == 0) { width = mMeasuredDimension[0]; } } } switch (widthMode) { case View.MeasureSpec.EXACTLY: case View.MeasureSpec.AT_MOST: case View.MeasureSpec.UNSPECIFIED: } switch (heightMode) { case View.MeasureSpec.EXACTLY: height = heightSize; case View.MeasureSpec.AT_MOST: case View.MeasureSpec.UNSPECIFIED: } setMeasuredDimension(widthSpec, height); } private void measureScrapChild(RecyclerView.Recycler recycler, int position, int widthSpec, int heightSpec, int[] measuredDimension) { View view = recycler.getViewForPosition(position); if (view != null) { RecyclerView.LayoutParams p = (RecyclerView.LayoutParams) view.getLayoutParams(); int childHeightSpec = ViewGroup.getChildMeasureSpec(heightSpec, getPaddingTop() + getPaddingBottom(), p.height); view.measure(widthSpec, childHeightSpec); measuredDimension[0] = view.getMeasuredWidth() + p.leftMargin + p.rightMargin; measuredDimension[1] = view.getMeasuredHeight() + p.bottomMargin + p.topMargin; recycler.recycleView(view); } } @Override public void onLayoutChildren(RecyclerView.Recycler recycler, RecyclerView.State state) { super.onLayoutChildren(recycler, state); }}
用法:
recyclerView.setLayoutManager(new Mylayout(this));
0 0
- RecyclerView的自适应高度
- RecyclerView自适应高度
- RecyclerView自适应高度
- 解决 RecyclerView 自适应高度
- RecyclerView 自适应高度
- RecyclerView高度随Item自适应
- RecyclerView高度随Item自适应
- RecyclerView自适应高度的LayoutManager
- RecyclerView自适应高度的LinearLayoutManager
- RecyclerView高度随Item自适应
- RecyclerView高度随Item自适应
- RecyclerView 自适应高度 正确做法。
- RecyclerView 自适应高度 正确做法
- recyclerview高度根据条目自适应
- RecyclerView实现瀑布流,图片自适应高度
- recyclerView高度不能自适应(item满屏)
- android RecyclerView自适应高度的LayoutManager
- RecyclerView高度随Item自适应 GridLayoutManager和LinearLayoutManager都适用
- OC学习-block
- 初识CAPWAP (四)
- 《谈学单片机有前途还是嵌入式系统有前途》一文吴坚鸿回复整理
- TextView 文本过长时自动打点
- Android的Textview里面夹杂图片
- RecyclerView自适应高度
- 初识capwap(五)
- java中利用jxl包对Excel文件进行修改保存
- 我的博客即将入驻“云栖社区”,诚邀技术同仁一同入驻。
- capwap的前世今生
- 位运算总结
- android Listview中设置enable状态,显示点击的item
- linux用户操作
- 【HPU】[1732]序列的区间操作