Android中ScrollView嵌套ListView只显示一行的解决方案

Android中ScrollView嵌套ListView只显示一行的解决方案

解决方案1:

直接把包含ListView控件的ScrollView控件从布局文件中去除,留下ListView控件,这是最简单快捷的解决办法.

如果一定要在ScrollView中包含ListView,则参考

解决方案2:

public void showlist()
{
        List<HashMap<String, String>> dataHashMaps = new ArrayList<HashMap<String, String>>();
        for (int i = 0; i < 8; i++)
        {
            HashMap<String, String> map = new HashMap<String, String>();
            map.put("name", "张三" + i);
            map.put("phone", "1333333333" + i);
            dataHashMaps.add(map);
        }
        System.out.println(dataHashMaps.size());
        SimpleAdapter adapter = new SimpleAdapter(this, dataHashMaps, R.layout.item, new String[]
        { "name", "phone" }, new int[]
        { R.id.name, R.id.phone });
        ListView listView = (ListView) findViewById(R.id.list);
        listView.setAdapter(adapter);

        //处理方案:
        int totalHeight = 0;
        // 如果没有设置数据适配器,则ListView没有子项,返回。
        for (int index = 0, len = adapter.getCount(); index < len; index++)
        {
            View listViewItem = adapter.getView(index, null, listView);
            // 计算子项View 的宽高
            listViewItem.measure(0, 0);
            // 计算所有子项的高度和
            totalHeight += listViewItem.getMeasuredHeight();
        }
        ViewGroup.LayoutParams params = listView.getLayoutParams();
        // listView.getDividerHeight()获取子项间分隔符的高度
        // params.height设置ListView完全显示需要的高度
        params.height = totalHeight + (listView.getDividerHeight() * (adapter.getCount() - 1));
        listView.setLayoutParams(params);
    }

时间: 2024-12-25 02:19:38

Android中ScrollView嵌套ListView只显示一行的解决方案的相关文章

ScrollView嵌套ListView只显示一行之计算的高度不正确的解决办法(转)

ScrollView嵌套ListView只显示一行之计算的高度不正确的解决办法 分类: android应用开发2013-12-19 09:40 1045人阅读 评论(3) 收藏 举报 AndroidScrollView嵌套ListView显示一行高度不正确 1.前言 从谷歌那里找到的ScrollView嵌套ListView只显示一行的解决办法相信很多人都遇到过,然后大部分都是用这位博主的办法解决的吧 刚开始我也是用这个办法解决的,首先感谢这位哥的大私奉献,贴上地址 http://blog.csd

一键解决ScrollView嵌套ListView只显示一行的问题

/** * 解决ScrollView嵌套ListView只显示一行的问题 * * @param listView */ private void setListViewHeightBasedOnChildren(ListView listView) { ListAdapter listAdapter = listView.getAdapter(); if (listAdapter == null) { return; } int totalHeight = 0; for (int i = 0;

ScrollView嵌套ListView只显示一行

错误描述 ScrollView嵌套ListView中导致ListView高度计算不正确,只显示一行. 解决方法 重写ListView的onMeasure方法,代码如下. @Override public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int mExpandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_

安卓开发ScrollView嵌套ListView只显示一行

在用列表控件做一个“更多功能”的界面的时候 1 <?xml version="1.0" encoding="utf-8"?> 2 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 3 android:id="@+id/ScrollView" 4 android:layout_width="fill_paren

ScrollView嵌套ListView只显示一行(转帖)

public class MainActivity extends Activity {        private ListView listView;        @Override        protected void onCreate(Bundle savedInstanceState) {            super.onCreate(savedInstanceState);            setContentView(R.layout.activity_mai

一键解决ScrollView嵌套ListView仅仅显示一行的问题

/** * 解决ScrollView嵌套ListView仅仅显示一行的问题 * * @param listView */ private void setListViewHeightBasedOnChildren(ListView listView) { ListAdapter listAdapter = listView.getAdapter(); if (listAdapter == null) { return; } int totalHeight = 0; for (int i = 0;

Android ScrollView中嵌套ListView只显示一行的解决办法

Android编程中,ScrollView嵌套ListView时,会无法正确的计算ListView的大小.解决的办法如下: (非原创,网上搜到的解决方法) public class MainActivity extends Activity { private ListView listView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); s

android中ScrollView嵌套ListView或GridView显示位置问题

Android中ScrollView中嵌套ListView或GridView时在开始进入界面时总是显示中间位置,开头的位置显示不出来.这种情况下只需要在ScrollView的父控件中添加以下两行代码即可. 1 android:focusableInTouchMode="true" 2 android:focusable="true" 还有一个问题:在ScrollView嵌套ListView或GridView时仅仅显示一行或两行,ListView或GridView无法

Android 中ScrollView嵌套ListView 最简单有效的处理方法

第一次写博客,有错的地方大家可以指出: 大家都知道在ScrollView嵌套ListView,ListView会显示不完全,无法计算ListView的高度,要解决在一个滑动界面中显示ListView和其他布局,有两种方法: 第一种:就是让listView的高度全部展示出来,那么这个就要对ListView进行封装,重新设置高度:代码如下: public class ListViewForScrollView extends ListView { public ListViewForScrollVi