##***Scrollview和ExpandableListView嵌套显示不全***

- 当我们将ExpandableListView嵌套在Scrollview之中时,我们必须要确保我们的不居中ExpandableListView在最后

- 在OnCreate()方法中要用到的代码

mListView = (ExpandableListView) findViewById(R.id.activity_expandable_list_view);
        MyExpandableListAdapter adapter = new MyExpandableListAdapter(this,
                mGroups);
        mListView.setAdapter(adapter);
        mListView.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {
 
            @Override
            public boolean onGroupClick(ExpandableListView parent, View v,
                                        int groupPosition, long id) {
                setListViewHeight(parent, groupPosition);
                return false;
            }
        });

- 还必须用到的方法如下:

其中,group为一级条目当前的位置,如果不是在onGroupClick()方法中调用,则不用传group参数,也不做if判断。

/**设置listview的高度,解决嵌套在ScrollView中显示不全的问题*/

private void setListViewHeight(ExpandableListView listView, int group){
        //得到相应ListView的适配器
        ExpandableListAdapter listAdapter = listView.getExpandableListAdapter();
        //总高度
        int totalHeight = 0;
        //期望的宽度
        int desiredWidth = View.MeasureSpec.makeMeasureSpec(listView.getWidth(), View.MeasureSpec.EXACTLY);
        for (int i = 0; i < listAdapter.getGroupCount(); i++) {
            //得到一级条目
            View groupItem = listAdapter.getGroupView(i, false, null, listView);
            //groupItem根据给的参数测量一下尺寸,方法调用完后groupItem大小就确定了
            groupItem.measure(desiredWidth, View.MeasureSpec.UNSPECIFIED);
            //累加一级条目高度
            totalHeight += groupItem.getHeight();
            //    除了group条目外都展开了  或者  group那一条目没有展开
            if (((listView.isGroupExpanded(group))&&(i!=group)) ||((!listView.isGroupExpanded(group))&&(i == group)) ) {
                for (int j = 0; j < listAdapter.getChildrenCount(i); j++) {
                    //得到二级条目
                    View listItem = listAdapter.getChildView(i, j, false, null, listView);
                    //listItem根据给的参数测量一下尺寸,方法调用完后listItem大小就确定了
                    listItem.measure(desiredWidth, View.MeasureSpec.UNSPECIFIED);
                    //累加二级条目高度
                    totalHeight += listItem.getHeight();
                }
            }
        }
        //获得listView的布局参数
        ViewGroup.LayoutParams params = listView.getLayoutParams();
        //listView的高度 = 一级条目和二级条目总和 + 分割线高度总和
        int height = totalHeight + (listView.getDividerHeight()*(listAdapter.getGroupCount() - 1));
        //如果高度小于10,则设置为200,没有太大关系
        if(height < 10){
            height = 200;
        }
        //把高度赋值给布局参数
        params.height = height;
        //把布局参数回传给listView
        listView.setLayoutParams(params);
        //listView按照参数从新布局
        listView.requestLayout();
    }

Android--------解决ScrollView中嵌套ExpandableListView显示不全的问题的更多相关文章

  1. Android解决RecyclerView中的item显示不全方案

    最近的项目中实现订单确定页面.需要使用ScrollView嵌套RecyclerView,当RecyclerView中的item数量比较多时,就会出现item只显示一部分数据,并没有将用户勾选的商品数量 ...

  2. 解决scrollView中嵌套编辑框导致不能上下滑动的问题

    EditText设置maxLines之后,文本行数超过maxLines,会网上折叠,上下滑动能够浏览全部文本. 若EditText外层有scrollView.在EditText上下滑动,不会像正常情况 ...

  3. Android 解决ScrollView下嵌套ListView进页面不在顶部的问题

    以下为整理: 方法1 刚开始还可以,后来再调试时就不行了. 为了解决scrollview和listview冲突  设置了listview的高度   结果进页面就不是在顶部了 . 解决方案1:Scrol ...

  4. 解决ScrollView中嵌套ListView滚动效果冲突问题

    在ScrollView中嵌套使用ListView,ListView只会显示一行到两行的数据.起初我以为是样式的问题,一直在对XML文件的样 式进行尝试性设置,但始终得不到想要的效果.后来在网上查了查, ...

  5. Android -- 在ScrollView中嵌套ListView

    在做一个工程,这个工程的布局可以相当的复杂,最外面是ScrollView,在ScrollView里面有两个Listview,这下好了,布局出来了,放在机子上跑,卡得想死有木有,信息乱跑乱出现,表示非常 ...

  6. ScrollView中嵌套ListView显示

    想要ScrollView中嵌套显示ListView 需要自定义ListView 并重写onMeasure方法 重新计算  heightMeasureSpec的高度 int newHeight = Me ...

  7. ScrollView中嵌套ExpandableListView

    为了让SrollView中嵌套ExpandableListView,我们就得改ListView的高度,所以写一个类继承于ExpandableListview: import android.conte ...

  8. android 解决ScrollView中的子布局不能够填充整个ScrollView的情况。

    在开发中如果你的xml文件的跟布局是ScrollView,在ScrollView中无论你写什么样的布局,其默认情况下都是不能填充整个布局的.也就是说你的ScrollView中的子布局设置fill_pa ...

  9. 解决scrollView中嵌套viewPager的冲突问题

    很简单,在外层ScrollView中添加android:fillViewport="true"属性,然后给viewPager添加一个固定高度

随机推荐

  1. web负载均衡整理

    参考:http://www.cnblogs.com/lovingprince/archive/2008/11/13/2166350.html http://www.cnblogs.com/loving ...

  2. unity碰撞组件、刚体组件

    游戏导入标准资源包“Character Controllers”后可以为游戏对象添加 character(角色控制器)组件: 添加角色控制器组建以后可以控制游戏对象移动: 角色控制器组件因为与碰撞组件 ...

  3. adb安装和卸载apk的方式

    昨天在使用adb卸载程序,结果死活卸载不了.我输入的命令和系统提示如下: D:\testApk>adb uninstall HelloWorld Failure 后来发现原来卸载程序时,只adb ...

  4. pyopenssl

    https://pyopenssl.readthedocs.org/en/stable/ pyopenssl是一个封装了openssl的python模块. 使用它可以方便地进行一些加解密操作. 1.产 ...

  5. ACboy needs your help(HDU 1712 分组背包入门)

    ACboy needs your help Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  6. 滑雪(POJ 1088 记忆化搜索)

    滑雪 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 88094   Accepted: 33034 Description ...

  7. 设置WebSphere字符集参数

    设置WebSphere字符集参数 1. 登陆was控制台 2. 依次点击服务器→服务器类型→应用服务器,显示应用程序服务器页面: 3. 选择并点击需要设置字符集的服务器,比如说本例中的server1  ...

  8. Unity3D使用NGUI做个弹窗

    主要函数:  NGUITools.AddChild(gameobj, prefab);//gameobj为父对象,prefab为要显示的窗体对象预制 然后写个方法,限制出现多个即可

  9. python 安装 ez_setup.py出现的问题及解决办法

    试了网上好几个解决办法. 下面这个办法是最对我胃口的.  ~~~~~~~~~~~~~~~~ 安装ez_setup.py时出现了这个问题: UnicodeDecodeError: 'ascii' cod ...

  10. ubuntu12中设置PATH环境变量的几种方法(三种办法)

    如果在Ubuntu12系统中自行安装了一些软件,特别是使用tar.gz文件包安装的软件,通常会放在/usr/local或者/opt,甚至放在/home下,但是如果要调用或执行时,必须加上完整的路径才可 ...