android:ScrollView嵌套ListView的问题
来源:互联网 发布:windows api soket 编辑:程序博客网 时间:2024/06/14 09:36
在ScrollView中嵌套使用ListView,看起来ListView只会显示一行多一点,不能滑动。ListView的高度怎么改都有问题,与预期不符合。搜索了一些解决方案,我觉得最好不要用这样的设计,因为默认情况下android 禁止在ScrollView中放入另外的ScrollView,它的高度是无法计算的
在ScrollView中嵌套使用ListView,ListView只会显示一行多一点。两者进行嵌套,即会发生冲突。
由于ListView本身都继承于ScrollView,一旦在ScrollView中嵌套ScrollView,
那么里面的ScrollView高度计算就会出现问题。
我们也就无法得到想要的效果。
下面进入正题,我们将讨论ScrollView中嵌套ListView情况。
核心解决方案: 重写ListView或者GridView的OnMesure 方法。对GridView同样适用。
本帖最后由 小尛龙 于 2013-9-6 10:53 编辑
效果图:
![](http://www.apkbus.com/data/attachment/forum/201306/20/175504al71xx757exmldl5.png)
在ScrollView中嵌套使用ListView,ListView只会显示一行多一点。两者进行嵌套,即会发生冲突。
由于ListView本身都继承于ScrollView,一旦在ScrollView中嵌套ScrollView,
那么里面的ScrollView高度计算就会出现问题。
我们也就无法得到想要的效果。
下面进入正题,我们将讨论ScrollView中嵌套ListView情况。
核心解决方案: 重写ListView或者GridView的OnMesure 方法。对GridView同样适用。复制代码ScrollView中嵌套ListView:复制代码自定义ListView:复制代码这样出来的效果是这样的:
![](http://www.apkbus.com/data/attachment/forum/201306/20/175504jw9v16n6zw3nbz5q.png)
没有上面的按钮,一进页面直接显示的是ListView内容,怎么一开始就显示头部。
ScrollView有个属性mScrollView.scrollTo(x, y)可以显示位置。
但是实际却没有达到效果,查了说mScrollView.scrollTo(x, y)首次初始化时无效果。
最后我用了mScrollView.smoothScrollTo(0,0);OK
在ScrollView中嵌套使用ListView,ListView只会显示一行多一点。两者进行嵌套,即会发生冲突。
由于ListView本身都继承于ScrollView,一旦在ScrollView中嵌套ScrollView,
那么里面的ScrollView高度计算就会出现问题。
我们也就无法得到想要的效果。
下面进入正题,我们将讨论ScrollView中嵌套ListView情况。
核心解决方案: 重写ListView或者GridView的OnMesure 方法。对GridView同样适用。
- protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
- int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
- MeasureSpec.AT_MOST);
- super.onMeasure(widthMeasureSpec, expandSpec);
- }
本帖最后由 小尛龙 于 2013-9-6 10:53 编辑
效果图:
![](http://www.apkbus.com/data/attachment/forum/201306/20/175504al71xx757exmldl5.png)
在ScrollView中嵌套使用ListView,ListView只会显示一行多一点。两者进行嵌套,即会发生冲突。
由于ListView本身都继承于ScrollView,一旦在ScrollView中嵌套ScrollView,
那么里面的ScrollView高度计算就会出现问题。
我们也就无法得到想要的效果。
下面进入正题,我们将讨论ScrollView中嵌套ListView情况。
核心解决方案: 重写ListView或者GridView的OnMesure 方法。对GridView同样适用。
- protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
- int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
- MeasureSpec.AT_MOST);
- super.onMeasure(widthMeasureSpec, expandSpec);
- }
- package com.android.xiaomolongstudio.example.scrollviewlistview;
- import java.util.ArrayList;
- import java.util.List;
- import android.app.Activity;
- import android.os.Bundle;
- import android.view.Menu;
- import android.widget.ArrayAdapter;
- import android.widget.ListView;
- /**
- *
- * @author 小尛龙
- *
- */
- public class MainActivity extends Activity {
- ListView listView;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- listView = (ListView) findViewById(R.id.listView);
- listView.setAdapter(new ArrayAdapter<String>(this,
- android.R.layout.simple_expandable_list_item_1, getData()));
- }
- private List<String> getData() {
- List<String> data = new ArrayList<String>();
- for (int i = 0; i < 30; i++) {
- data.add("测试" + i);
- }
- return data;
- }
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- // Inflate the menu; this adds items to the action bar if it is present.
- getMenuInflater().inflate(R.menu.activity_main, menu);
- return true;
- }
- }
- package com.android.xiaomolongstudio.example.scrollviewlistview;
- import android.content.Context;
- import android.util.AttributeSet;
- import android.widget.ListView;
- public class MyListView extends ListView {
- public MyListView(Context context) {
- super(context);
- }
- public MyListView(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
- public MyListView(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
- }
- @Override
- protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
- int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
- MeasureSpec.AT_MOST);
- super.onMeasure(widthMeasureSpec, expandSpec);
- }
- }
![](http://www.apkbus.com/data/attachment/forum/201306/20/175504jw9v16n6zw3nbz5q.png)
没有上面的按钮,一进页面直接显示的是ListView内容,怎么一开始就显示头部。
ScrollView有个属性mScrollView.scrollTo(x, y)可以显示位置。
但是实际却没有达到效果,查了说mScrollView.scrollTo(x, y)首次初始化时无效果。
最后我用了mScrollView.smoothScrollTo(0,0);OK
- android:ScrollView嵌套ListView的问题
- android:ScrollView嵌套ListView的问题
- android:ScrollView嵌套ListView的问题
- android:ScrollView嵌套ListView的问题
- android scrollview listview的嵌套问题
- android ScrollView嵌套listview的一些问题
- android中scrollview嵌套listview的问题
- android scrollView嵌套listview问题
- Android ScrollView嵌套ListView问题
- Android-ListView和ScrollView内嵌套listview的问题
- Android ScrollView里嵌套listview,listview显示不全的问题
- android ScrollView嵌套ListView listview显示不全的问题
- scrollView嵌套listview的问题
- ScrollView嵌套ListView的问题,
- ScrollView嵌套listview的问题
- ScrollView嵌套ListView的问题
- ScrollView嵌套ListView的问题
- listview嵌套listview ScrollView嵌套listview 的冲突问题
- UVa:10344 23 out of 5
- Ajax工作原理
- 两台电脑用网线如何连接?
- hdfs集群启动——概述(1)
- Linux与VxWorks主要区别(一):内核结构
- android:ScrollView嵌套ListView的问题
- Linux就是这个范儿之第一次亲密接触(2)
- hdu 4424 Conquer a New Region(并查集)
- Linux就是这个范儿之第一次亲密接触(3)
- 浅谈未定义行为(Undefined behavior)
- mac 下的 homebrew
- 关于H.265的初步入门工具的使用
- win7与linux双系统安装与卸载(整理)
- riddle