2014-05-02 88 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

享受!