对于ListView内部的ListView,一般用来展示少量的列表数据。
内部的ListView的高度看起来是一个固定值且无法滑动,这个就比较蛋疼了。、
提供两种解决方案,方案的核心都是重新设置内部ListView的高度。
1 通过定制组件,重新写一个控件,继承于ListView.
public class CustomisedListView extends ListView{
public CustomisedListView(Context context) {
super(context);
}
public CustomisedListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public CustomisedListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
}
然后将这个组件作为外部ListView的Item的一部分或全部就可以了。
2 直接在代码中指定内部ListView的高度
这个也分为两种情况:
A 计算出内部ListView中的所有Item的高度
public static void reSetListViewHeight(ListView listView) {
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);
}
这样就可以重新设置ListView的高度了
B预估出内部ListView每个Item的高度,直接写死,但感觉不如上面的好,上面的也有要求,内部ListView的Item一定得是LinearLayout
分享到:
相关推荐
android 的listview 内部item的布局包含checkbox控件简单好用!
本例通过android中接口回调,实现listview内部控件的点击事件获取与处理。具体实现原理可查看我的博客:http://blog.csdn.net/u013318697/article/details/50615129
listview 内部item点击事件, public interface Callback { public void click(View v); }
通过接口回调的方式,在Activity中响应ListView内部按钮的点击事件。
ListView实现对显示的单行的Item进行操作。主要实现BaseAdapter
完美解决ListView内部嵌套GridView导致各种异常,无法点击的问题,包含遇到的问题可能有:1、gridview显示不全。无法占满。2、listView点击item点击事件无效 3、GridView点击事件无效。4、假如GridView每行显示3个。...
实现ListView拖动项的功能让初学者更好的掌握C#中ListView 更好的运用
ListView源码分析,RecycleBin内部方法作用,适配器模式在ListView中的体现
listview不可拖动列头锁定列头Columns
本篇文章主要介绍了android中在Activity中响应ListView内部按钮的点击事件的两种方法,有需要的可以了解一下。
ScrollView嵌套ListView滑动冲突的解决方案
微信小程序里的listview,内置了上拉刷新下拉加载更多的功能,以及页面状态显示 适用于页面内有一个可上拉刷新下拉加载的list的情况 使用 1.拷贝lib文件夹到根目录 2.拷贝utils中的lvUtil和netUtil到你的utils文件夹 3...
listview自定义Adapter实现仿qq页面,内部代码有详细注释,
CSDN里面找了好多个,没有找到很好的 自己在别的的基础上添加了备注 绝对可以使用
可扩展的ListView内部嵌套ViewPager和GridView使用,
ScrollView中嵌套
自定义的嵌套ListView,实现一个布局内部显示嵌套多个ListView
使用外部拦截法 、内部拦截法解决ScrollView+ListView 解决滑动冲突