布局嵌套时显示不全的问题 PullToRefreshRecyclerView,状态栏,GridView
2017-12-13 19:16
656 查看
重新测量
public class MeasureUtil { public static int getScrolledDistance(PullToRefreshRecyclerView pullToRefreshRecyclerView){ LinearLayoutManager layoutManager = (LinearLayoutManager) pullToRefreshRecyclerView.getLayoutManager(); View childAt = pullToRefreshRecyclerView.getChildAt(0); int firstVisibleItemPosition = layoutManager.findFirstVisibleItemPosition(); int height = childAt.getHeight(); int decoratedBottom = layoutManager.getDecoratedBottom(childAt); return (firstVisibleItemPosition+1)* height - decoratedBottom; } public static int getStatusBarHeight(Context context){ Class<?> c = null; Object obj = null; Field field = null; int x = 0, statusBarHeight = 0; try { c = Class.forName("com.android.internal.R$dimen"); obj = c.newInstance(); field = c.getField("status_bar_height"); x = Integer.parseInt(field.get(obj).toString()); statusBarHeight = context.getResources().getDimensionPixelSize(x); } catch (Exception e1) { e1.printStackTrace(); } return statusBarHeight; } public static void setListViewHeightBasedOnChildren(ListView listView) { if(listView == null) return; ListAdapter listAdapter = listView.getAdapter(); if (listAdapter == null) { // pre-condition return; } int totalHeight = 0; for (int i = 0; i < listAdapter.getCount(); i++) { View listItem = listAdapter.getView(i, null, listView); listItem.measure(0, 0); totalHeight += listItem.getMeasuredHeight(); } ViewGroup.LayoutParams params = listView.getLayoutParams(); params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1)); listView.setLayoutParams(params); } public static void reMesureGridViewHeight(GridView gridView) { // 获取GridView对应的Adapter ListAdapter listAdapter = gridView.getAdapter(); if (listAdapter == null) { return; } int rows; int columns = 0; int horizontalBorderHeight = 0; Class<?> clazz = gridView.getClass(); try { // 利用反射,取得每行显示的个数 Field column = clazz.getDeclaredField("mRequestedNumColumns"); column.setAccessible(true); columns = (Integer) column.get(gridView); // columns = gridView.getNumColumns();//Call requires API level 11 // 利用反射,取得横向分割线高度 Field horizontalSpacing = clazz.getDeclaredField("mRequestedHorizontalSpacing"); horizontalSpacing.setAccessible(true); horizontalBorderHeight = (Integer) horizontalSpacing.get(gridView); // horizontalBorderHeight = gridView.getHorizontalSpacing();//Call requires API level 16 } catch (Exception e) { e.printStackTrace(); } // 判断数据总数除以每行个数是否整除。不能整除代表有多余,需要加一行 if (listAdapter.getCount() % columns > 0) { rows = listAdapter.getCount() / columns + 1; } else { rows = listAdapter.getCount() / columns; } int totalHeight = 0; for (int i = 0; i < rows; i++) { // 只计算每项高度*行数 View listItem = listAdapter.getView(i, null, gridView); listItem.measure(0, 0); // 计算子项View 的宽高 totalHeight += listItem.getMeasuredHeight(); // 统计所有子项的总高度 } ViewGroup.LayoutParams params = gridView.getLayoutParams(); params.height = totalHeight + horizontalBorderHeight * (rows - 1);// 最后加上分割线总高度 gridView.setLayoutParams(params); } }
相关文章推荐
- PullToRefreshScrollView 嵌套gridview或listView,顶部布局顶上去的问题处理
- PullToRefreshScrollView 嵌套 ViewPager 冲突导致界面不显示的问题
- RecyclerView嵌套GridView显示不全,Item的复用的问题
- android PullToRefreshScrollView中 嵌套viewpage 解决不显示的问题
- Android 6.0+ RecyclerView嵌套在ScrollView显示不全以及Android 7.0+ PopupWindow位置显示不对的问题解决
- ScrollView嵌套ListView,GridView,RecyclerView以及RecyclerView嵌套RecyclerView显示不全的解决方法
- 解决ScrollView嵌套RecyclerView时item显示不全的问题
- GridView嵌套在ViewPager中,ViewPager嵌套在ScrollView中,GridView显示不全问题
- 解决ScrollView里嵌套多个RecyclerView时,RecyclerView数据显示不全的问题
- 关于android的pulltorefreshview组件在视图页面无法显示的问题
- pulltorefresh + StaggeredGridView 添加headerView后不能上拉加载更多的问题
- 解决ScrollView嵌套RecyclerView 滑动卡顿和嵌套多个RecyclerView 显示不全的问题
- Recycleview实现复杂页面三种以上布局 瀑布流多布 scrollview嵌套recyclerView 显示不全滑动冲突
- Recycleview实现复杂页面 三种以上布局 瀑布流 多布局 scrollview嵌套recyclerView 显示不全 滑动冲突 之进阶终极篇
- Android开发---Scrollerview中嵌套RecyclerView RecyclerView显示不全问题
- RecyclerView嵌套GridView,GridView显示不全
- PullToRefreshScrollView嵌套两个GridView
- PullToRefreshScrolview里面嵌套listView,gridView.
- ScrollView 嵌套 RecyclerView 高度自适应,item显示不全 问题
- ListView的item布局中嵌套GridView,GridView显示不全的问题