2014-05-02 122 views
2

我目前正在开发基于在iOS版本的Android应用程序,我必须执行主菜单布局如下:ListView控件内滚动型

有几个按钮的顶部中心,然后ViewPager在它下面。这个ViewPager在它(它自己和集线器之间)上有一个栏来显示页面的标题。 ViewPager内部是一个ListView来显示文章。

预期的滚动行为如下:当您从顶部向下滚动时,它应该正常滚动并隐藏集线器,然后当您滚动到标题栏到达顶部的位置时,它应该将标题吧,你应该仍然可以滚动ListView。

我不知道如何将集线器添加到所有这些,并具有所需的行为。没有集线器,一切都已经实施并正常运行。但我不知道如何添加它并使其工作。

我试着把一切都放在ScrollView中,但是这似乎不起作用。滚动仍然在文章的ListView上工作,但它不会滚动集线器。

根据大多数人的看法,你不应该在另一个里面有一个滚动元素。但我没有看到任何其他方式来做到这一点。

回答

1

我有一个滚动视图中的多个listview,并使其工作我使用下面的方法设置每个列表视图的高度。事情过去一切正常。

public static void setListViewHeightBasedOnChildren(ListView listView) { 
    ListAdapter listAdapter = listView.getAdapter(); 
    if (listAdapter == null) 
     return; 

    int desiredWidth = MeasureSpec.makeMeasureSpec(listView.getWidth(), 
      MeasureSpec.UNSPECIFIED); 
    int totalHeight = 0; 
    View view = null; 
    for (int i = 0; i < listAdapter.getCount(); i++) { 
     view = listAdapter.getView(i, view, listView); 
     if (i == 0) 
      view.setLayoutParams(new ViewGroup.LayoutParams(desiredWidth, 
        LayoutParams.WRAP_CONTENT)); 

     view.measure(desiredWidth, MeasureSpec.UNSPECIFIED); 
     totalHeight += view.getMeasuredHeight(); 
    } 
    ViewGroup.LayoutParams params = listView.getLayoutParams(); 
    params.height = totalHeight 
      + (listView.getDividerHeight() * (listAdapter.getCount() - 1)); 
    listView.setLayoutParams(params); 
    listView.requestLayout(); 
} 
0

我实现了这个组件是什么在起作用作为一个ListView,所以你并不需要去适应你的外部代码,并将其与其他元素结合在一起解决了内部滚动型的ListView的问题...我把它命名为StretchedListView ,不需要外部入侵。这是在另一篇文章的答案:https://stackoverflow.com/a/21878703

享受!