ListView在ScrollView中无法正常显示
对于ListView放在在ScrollView中时,目前Android平台仍然有些bug,状态是显示的ListView仅仅大约一行半(总Item肯定大于2行,比如10行),通过Layout布局属性设置目前仍然无法修正。通过分析ListView和ScrollView构造没有发现很好的解决方法,目前可以通过自己实现ListView来解决,Android123解决的方式重写ListView的onMeasure重新计算显示行数。希望在Android以后的版本,至少2.1以后能够改进。这个问题大家怎么解决的?能不能提供一个具体的例子
对于ListView放在在ScrollView中时,目前Android平台仍然有些bug,状态是显示的ListView仅仅大约一行半(总Item肯定大于2行,比如10行),通过Layout布局属性设置目前仍然无法修正。通过分析ListView和ScrollView构造没有发现很好的解决方法,目前可以通过自己实现ListView来解决,Android123解决的方式重写ListView的onMeasure重新计算显示行数。希望在Android以后的版本,至少2.1以后能够改进。这个问题大家怎么解决的?能不能提供一个具体的例子
解决方案 »
- 关于Android设置铃声的问题
- Android 如何不让ContentObserver过期
- 【蓝牙4.0】相关问题请教啊
- 如何获取自定义的scrollview当前显示的大小?
- 使用百度地图时无法加载动态库 mBMapMan.init(this.mStrKey, new MyGeneralListener());报错
- repo sync执行过程中,代码下载到哪个临时文件夹里面拉?
- 救命!android超入门问题!
- android 4.2 自动校正网络时间的问题
- 用JAVA代码实现LinearLayout布局并设置背景出现问题
- android挂载NFS的一些问题
- 请问android gallery如何设置,让图片显示在靠左位置。而不是在中间
- scrollview不支持内嵌listview,多控件应使用哪种布局
和这位兄弟情况一模一样
搞了一天,结果是不成功的
最后找了个变通的方法:
首先ScrollView内置一个Layout,此Layout内放置列表(不是指ListView)数据;
然后通过循环,直接借用ListView的配置文件list,通过以下方法找到一个View:
LayoutInflater.from(this).inflate(R.layout.list, null)
初始化以上的view并添加到Layout内结果成功
此Layout内放置列表(不是指ListView)数据 什么意思?
然后通过循环,直接借用ListView的配置文件list,通过以下方法找到一个View 往后我没看懂
就是放ListView的数据,而不是放ListView
<ScrollView >
<LinearLayout>
<ListView>
</ListView>
</LinearLayout>
</ScrollView >
自己写个类继承ListView 然后重新
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)这个方法
在中间调用setMeasuredDimension(320, 480);设置新的宽高public class XListView extends android.widget.ListView{
public XListView(android.content.Context context) {
// TODO Auto-generated constructor stub
super(context);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec){
setMeasuredDimension(320, 480);
}
}
我以前也遇到过,不过后来用listview的header和footer解决了。
,如果高度是“wrap_content”的,你又怎么去设置高度呢,
ScrollView和ListView都能滚动,我觉得ScrollView应该是由用户指定高度的,否则系统不着调如何设置高度了持续关注
然后在代码中这样设置
LinearLayout.LayoutParams lp1 = new LinearLayout.LayoutParams(
LayoutParams.FILL_PARENT, adapter.getCount() * 50 - 1);
listview.setLayoutParams(lp1);
其中50是每行的高度
这里面有完整的解决此问题的DEMO。