`

android ScrollView 与listView共存冲突问题解决方法(附图)

阅读更多
  • [list]
  • [*]   [size=medium] 最近因项目的需要,需要在ScrollView中加入ListView!这本身是非常简单的问题,但是按流程下来的时候,ListView中的数据一直没有全部显示,很纳闷,一直在找是哪里出了问题!最后一位同事提醒了我!ScorllView中放入ListView是不可以计算ListVIiew的高度的。这时才恍悟过来,查了下资料看了看!很多已经有详细的文档来做解答了!http://blog.csdn.net/hitlion2008/article/details/6737459这个就比较好的阐释了问题!
  • [*]    不过在这里补充一下的是;如果ListView的每个Item是单行的话,这个方法是完全可以解决的,但是如果不确定每个Iitem的行数,这个方式是计算不了ListView的高度!这个问题先抛出来,在接下来的时间会尝试解决!如果有同行可以提出更好的方法解决!大家一起讨论下!
  • [*]
  • [*]最近关于这个问题;从新规划了下思路!
  • [*]   1.设置ScrollView的一个属性android:fillViewport="true"
  • [*]   2.使用一个方法,将listview放入该方法中,来计算其高度。特别注意一点就是,这个listview的每个Iitem的布局要是LinearLayout。
  • [*]方法如下:
[/list]



/**
     * 重新计算ListView的高度(ScorllView 中如果再放入scrollView 是无法计算的,我们可以计算后再赋值)
     * @param listView
     */
    public static void setListViewHeightBasedOnChildren(ListView listView) {
        ListAdapter listAdapter = listView.getAdapter(); 
        if (listAdapter == null) {
            // pre-condition
            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);
    }

最后附上项目的视图,可以在scrollView中放入listView .[/size]
  • 大小: 143.1 KB
  • 大小: 19 KB
  • 大小: 186.6 KB
分享到:
评论
1 楼 JavaEEdyc 2015-01-05  
http://m.qianka.com/shoutu?u=21120061&referer_code=0349&from=singlemessage&isappinstalled=1


领取话费,看看别人的营销模式多么的让人心暖暖!

相关推荐

Global site tag (gtag.js) - Google Analytics