zoukankan      html  css  js  c++  java
  • android下activity中多个listview只允许主界面滚动

    之前发现了自己的APP在处理两个listview时产生的一个bug。当两个listview中的item数量多出手机屏幕时,listview不能显示完全。一开始觉得只要加一个scrollview就可以了,但是后来发现想法是错误的,因为listview本身也是一个scrollview,那么scrollview嵌套scrollview的问题就很麻烦了,到底把滚动权交给谁,结果是哪个listview都不能滚动,后来谷歌了一大圈,终于发现了两个帖子,给我启发:

    1 stackoverflow

    http://stackoverflow.com/questions/3495890/how-can-i-put-a-listview-into-a-scrollview-without-it-collapsing

    2 csdn

    http://blog.csdn.net/huangbiao86/article/details/7978149

    主要的解决方法,就是禁用listview的滚动条,从而只有一个scrollview的滚动条。那么怎么禁用?或者限定listview的android:layout_width。

    网上提供的方法就是在刷新listview之前,计算list item的总的高度,从而设置android:layout_width,那么就可以做到固定高度了。

    /*** 
         * 动态设置listview的高度 
         *  
         * @param listView 
         */  
        public 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);  
        }  


    虽然这么做了,但是我最后还是发现高度不对,为什么呢?我调试发现,无论item里面的textview不管有几行,item的getMeasreHeight始终是固定值。那么怪不得了,textview的高度无法计算的话,那么高度也还是确定不了。无奈,我只能选择折中,设置textview的属性:

    android:sinleline="true"

    android:ellipsie="end"

    android::layout_width ="wrap_content"

    那么设置textview行为固定啦,这样就可以保证高度计算的准确。

    至此,bug解完

     

  • 相关阅读:
    python基础(二)
    python基础(一)
    SQL的四种连接-左外连接、右外连接、内连接、全连接
    mysql常用操作
    jenkins邮件通知功能
    mysql常用命令
    SQL优化法则小记
    架构漫谈
    今日头条的成功史
    python连接mysql数据库简单例子
  • 原文地址:https://www.cnblogs.com/james1207/p/3358233.html
Copyright © 2011-2022 走看看