Android中recycle高度的计算
2016-07-22 10:27
417 查看
recyclerView.setLayoutManager(new GridLayoutManager(activity, 3) {
@Override
public void onMeasure(RecyclerView.Recycler recycler, RecyclerView.State state, int widthSpec, int heightSpec) {
super.onMeasure(recycler, state, widthSpec, heightSpec);
int measuredWidth = recyclerView.getMeasuredWidth();
int measuredHeight = recyclerView.getMeasuredHeight();
int myMeasureHeight = 0;
int count = state.getItemCount();
for (int i = 0; i < count; i++) {
View view = recycler.getViewForPosition(i);
if (view != null) {
if (myMeasureHeight < measuredHeight && i % 3 == 0) {
RecyclerView.LayoutParams p = (RecyclerView.LayoutParams) view.getLayoutParams();
int childWidthSpec = ViewGroup.getChildMeasureSpec(widthSpec,
getPaddingLeft() + getPaddingRight(), p.width);
int childHeightSpec = ViewGroup.getChildMeasureSpec(heightSpec,
getPaddingTop() + getPaddingBottom(), p.height);
view.measure(childWidthSpec, childHeightSpec);
myMeasureHeight += view.getMeasuredHeight() + p.bottomMargin + p.topMargin;
}
recycler.recycleView(view);
}
}
// Log.i("Height", "" + Math.min(measuredHeight, myMeasureHeight));
setMeasuredDimension(measuredWidth, Math.min(measuredHeight, myMeasureHeight));
}
顶0
踩
@Override
public void onMeasure(RecyclerView.Recycler recycler, RecyclerView.State state, int widthSpec, int heightSpec) {
super.onMeasure(recycler, state, widthSpec, heightSpec);
int measuredWidth = recyclerView.getMeasuredWidth();
int measuredHeight = recyclerView.getMeasuredHeight();
int myMeasureHeight = 0;
int count = state.getItemCount();
for (int i = 0; i < count; i++) {
View view = recycler.getViewForPosition(i);
if (view != null) {
if (myMeasureHeight < measuredHeight && i % 3 == 0) {
RecyclerView.LayoutParams p = (RecyclerView.LayoutParams) view.getLayoutParams();
int childWidthSpec = ViewGroup.getChildMeasureSpec(widthSpec,
getPaddingLeft() + getPaddingRight(), p.width);
int childHeightSpec = ViewGroup.getChildMeasureSpec(heightSpec,
getPaddingTop() + getPaddingBottom(), p.height);
view.measure(childWidthSpec, childHeightSpec);
myMeasureHeight += view.getMeasuredHeight() + p.bottomMargin + p.topMargin;
}
recycler.recycleView(view);
}
}
// Log.i("Height", "" + Math.min(measuredHeight, myMeasureHeight));
setMeasuredDimension(measuredWidth, Math.min(measuredHeight, myMeasureHeight));
}
顶0
踩
相关文章推荐
- Android 从服务器获取信息 并显示 (包含服务器端代码)
- Android ImageCache图片加载
- Android dev
- Android绘图技巧练习之~~~~画表练习
- Android生命周期
- android开发教程21篇(几乎每一篇都是精华教程)
- 黑马66期Android_智慧北京_学习总结
- Android View详解(三) 视图状态及重绘流程分析
- Android中Activity启动模式SingleTask时点击Home键问题
- Android 自定义RecyclerView 实现真正的Gallery效果
- Android快速开发系列 10个常用工具类
- Android RecyclerView 使用完全解析 体验艺术般的控件
- dex分包方案概述与multidex包的配置使用
- Android开发中如何省电
- Android 关闭多个视图Intent.FLAG_ACTIVITY_CLEAR_TOP用法
- android基础——广播
- Android第一个JNI程序
- android源码framework下添加新资源的方法
- android图片加载之imageloader的简单使用
- Android Studio 引用jar及so文件