博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
andorid ListView和GirdView 与ScrollView 冲突
阅读量:5162 次
发布时间:2019-06-13

本文共 2425 字,大约阅读时间需要 8 分钟。

1.listview解决方法

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);}

 2.gridview解决方法

public static void setGridViewHeightBasedOnChildren(GridView gridView){        // 获取listview的adapter        ListAdapter listAdapter = gridView.getAdapter();        if (listAdapter == null) {            return;        }        // 固定列宽,有多少列        int col = 3; //gridView.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, gridView);            listItem.measure(0, 0);            // 获取item的高度和            totalHeight += listItem.getMeasuredHeight();        }        // 获取listview的布局参数        ViewGroup.LayoutParams params = gridView.getLayoutParams();        // 设置高度        params.height = totalHeight+20;        // 设置margin        ((ViewGroup.MarginLayoutParams) params).setMargins(10, 10, 10, 10);        // 设置参数        gridView.setLayoutParams(params);    }

 

 

3.自定义ListView

public class CustomListView extends ListView {    public CustomListView(Context context) {        super(context);    }    public CustomListView(Context context, AttributeSet attrs) {        super(context, attrs);    }    public CustomListView(Context context, AttributeSet attrs, int defStyleAttr) {        super(context, attrs, defStyleAttr);    }    @Override    public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {                 int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,                                 MeasureSpec.AT_MOST);                 super.onMeasure(widthMeasureSpec, expandSpec);             }}

 

转载于:https://www.cnblogs.com/hualuoshuijia/p/6950200.html

你可能感兴趣的文章
一些php文件函数
查看>>
有关快速幂取模
查看>>
Linux运维必备工具
查看>>
字符串的查找删除
查看>>
NOI2018垫底记
查看>>
快速切题 poj 1002 487-3279 按规则处理 模拟 难度:0
查看>>
Codeforces Round #277 (Div. 2)
查看>>
【更新】智能手机批量添加联系人
查看>>
NYOJ-128前缀式计算
查看>>
深入理解 JavaScript 事件循环(一)— event loop
查看>>
Hive(7)-基本查询语句
查看>>
注意java的对象引用
查看>>
C++ 面向对象 类成员函数this指针
查看>>
NSPredicate的使用,超级强大
查看>>
自动分割mp3等音频视频文件的脚本
查看>>
判断字符串是否为空的注意事项
查看>>
布兰诗歌
查看>>
js编码
查看>>
Pycharm Error loading package list:Status: 403错误解决方法
查看>>
steps/train_sat.sh
查看>>