ScrollView包裹ListView的两种处理方法
来源:互联网 发布:牛顿环实验数据及 编辑:程序博客网 时间:2024/05/01 21:18
第一种:动态计算ListView的总高度并设置(注意:子ListView的每个Item必须是LinearLayout,不能是其他的,因为其他的Layout(如RelativeLayout)没有重写onMeasure(),所以会在onMeasure()时抛出异常)
/**
*此方法必须在ListView设置完Adapter之后使用(setAdapter方法之后调用)
**/
private void setListViewHeightBasedOnChildren(ListView listView) {
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
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,重载onMeasure()方法,设置全部显示
package com.meiya.ui;
import android.widget.ListView;
/**
*
* @Description: scrollview中内嵌listview的简单实现
*
* @File: ScrollViewWithListView.java
*
* @Paceage com.meiya.ui
*
*
* @Date 下午03:02:38
*
* @Version
*/
public class ScrollViewWithListView extends ListView {
public ScrollViewWithListView(android.content.Context context,android.util.AttributeSet attrs) {
super(context, attrs);
}
/**
* Integer.MAX_VALUE >> 2,如果不设置,系统默认设置是显示两条
*/
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
}
以上可以解决scrollView内嵌listView,但是有一个问题是第一次进入界面时动态加载listview的items后页面会跳转到listview的第一个子项,我们可以直接将ScrollView滚动到顶部
scrollView.post(new Runnable() {
//让scrollview跳转到顶部,必须放在runnable()方法中
@Override
public void run() {
scrollView.scrollTo(0, 0);
}
});
0 0
- ScrollView包裹ListView的两种处理方法
- ScrollView包裹ListView
- 当ScrollView包裹listview的时候,listview只会显示一行,需要重写listview的onMeasure方法。
- 两种方法解决ScrollView嵌套ListView出现ListView显示不全的问题
- ScrollView嵌套Listview处理方法
- Android开发ScrollView嵌套ListView的处理方法
- ScrollView包含ListView的处理
- ScrollView中嵌套ListView滚动冲突的两种解决方案
- scrollview中嵌套listview的两种解决方式
- 由于图片异步加载,造成的被scrollView包裹的listview显示不全
- scrollview 中用listview的方法
- 计算并设置ListView的高度,防止嵌套ScrollView监听出现问题,(两种方法,一种自定义,一种测量)
- scrollview 包裹ListView recyclerview 为什么会不显示
- ScrollView能包裹ListView和其他控件一起滚动
- 处理ScrollView与listview,gridview的问题
- listview的item长按事件处理的两种方法
- 解决ScrollView嵌套ListView问题的三种方法
- LISTVIEW绑定数据的两种方法
- POJ-1562Oil Deposits
- Codeforces Round #315 (Div. 2)
- VS2015/MFC编辑框基本操作
- 实战iOS 9:开发者必须掌握的三种搜索API
- 深入理解Cocos2d-x 3.x:内置数据结构(2)Map
- ScrollView包裹ListView的两种处理方法
- fork() 问题
- QT信号和槽使用自定义的类或结构体
- Error: L6218E: Undefined symbol main (referred from entry9a.o).
- Markdown实现首行缩进
- sqlite3 — 轻量级嵌入式平台数据库开源软件
- Java中Object转化为int类型
- 类模板
- 解决MAC OS X Myeclipse 启动 Tomcat时控制台乱码问题