ScrollView+ListView,GrodView
来源:互联网 发布:show java 3.0汉化版 编辑:程序博客网 时间:2024/06/14 01:33
在开发中,会遇到这样的需求,整个列表上下滑动,里面有时可能会嵌套ListView或者GridView。
我使用的是PullToRefreshScrollView,这是一个库,里面有很多列表的控件。
在开发中会遇到如下两个问题:
1,ListView,GridView只显示一行。
2,ScrollView嵌套了ListView,GridView之后,进入的时候,显示的不是顶部。
针对以上两个问题,做出如下的解决方案:
1,重新计算ListView,GridView的高度。
/** * 动态设置ListView的高度 * * @param listView */public void setListViewHeightBasedOnChildren(ListView listView) { if (listView == null) return; ListAdapter listAdapter = listView.getAdapter(); if (listAdapter == null) { // pre-condition return; } int totalHeight = 0; if (listAdapter.getCount() != 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);}
/** * 动态设置GridView的高度 * * @param listView */public static void setListViewHeightBasedOnChildren(GridView listView) { // 获取listview的adapter ListAdapter listAdapter = listView.getAdapter(); if (listAdapter == null) { return; } // 固定列宽,有多少列 int col = 4;// listView.getNumColumns(); int totalHeight = 0; // i每次加4,相当于listAdapter.getCount()小于等于4时 循环一次,计算一次item的高度, // listAdapter.getCount()小于等于8时计算两次高度相加 for (int i = 0; i < listAdapter.getCount(); i += col) { // 获取listview的每一个item View listItem = listAdapter.getView(i, null, listView); listItem.measure(0, 0); // 获取item的高度和 totalHeight += listItem.getMeasuredHeight(); } // 获取listview的布局参数 ViewGroup.LayoutParams params = listView.getLayoutParams(); // 设置高度 params.height = totalHeight; // 设置margin ((ViewGroup.MarginLayoutParams) params).setMargins(10, 10, 10, 10); // 设置参数 listView.setLayoutParams(params);}
以上方式即可解决ListView或者GridView只显示一行的问题。
2,设置
ScrollView.setFocusableInTouchMode(true);
lvHome.setFocusable(false);以上方式即可解决所述问题
0 0
- ScrollView+ListView,GrodView
- scrollview listview
- ScrollView+ListView
- ScrollView && ListView
- android ScrollView嵌套ListView
- ScrollView中包含ListView
- ScrollView中嵌套ListView
- ScrollView中嵌套ListView
- scrollview listview共存
- ScrollView中嵌套ListView
- ListView ScrollView 复合选择
- ScrollView中添加ListView
- ScrollView嵌套 ListView
- scrollview 和listview 并存
- listView 与scrollView 共存
- android ScrollView嵌套ListView
- ScrollView ListView GridView
- scrollview与listview冲突
- WPF 样式与资源二
- OutOfMemoryError异常实例
- VC 窗口置于前台并激活的方法
- 今天敲定了我暂时不辞职的想法
- TCP/IP通信或串口通信数据类型转换
- ScrollView+ListView,GrodView
- 关于STL容器中vector特定元素的删除问题
- LaTeX手动安装宏包(package)以及生成帮助文档的整套流程
- Centos 6.5 在线安装 Mysql 5.6.32
- 142. Linked List Cycle II
- AngularJS速成教程第N集-AngularJS补充
- Java NIO时间服务
- Tomcat无缘无故停止
- java 优化