2013-05-01 35 views
0

我知道這個問題已經討論過,但我還沒有找到合適的答案。 我想有一個3行2列的表格。左欄是標題,右欄是項目清單。固定大小(不滾動)ListView

因此,我有3個列表,一個在另一個之下,我想使整個屏幕可滾動(不是每個列表可單獨滾動)。

解決方法是使用ScrollView作爲主要組件,然後使用TableView,然後在表的右欄中使用ListView。問題是ListView是一個可滾動的組件,不會在ScrollView內工作。

我的問題 - 有沒有任何組件,無論是Android API或第三方的一部分,具有ListView的功能,但是是固定的大小?我想享受適配器功能和onItemClick()功能(這給了我點擊的項目的位置)。

感謝

編輯:我想建議設置手動ListView的高度,其結果是,在ListView應該在區域中確實擴大爲必要的,但並沒有顯示在列表中的元素。

我用下面的代碼:

ListView lv = (ListView)view.findViewById(R.id.list); 
lv.setAdapter(adapter); 
LinearLayout.LayoutParams lParams = new LinearLayout.LayoutParams(lv.getLayoutParams()); 
lParams.height = calculateHeight(lv); 
lv.setLayoutParams(lParams); 

沒有最後3行只是正常工作,但隨後的大小是固定的,這使我回到我原來的問題。

+0

我不完全確定我明白你的問題,但如果問題在於listview是一個可滾動項目的事實,你可以不使用'setScrollContainer(boolean isScrollContainer)'基本上禁用在列表視圖上的滾動? ...鏈接到Android文檔http://developer.android.com/reference/android/view/View.html#setScrollContainer(boolean) – brendosthoughts 2013-05-01 06:01:34

+0

*我想使整個屏幕滾動(不是每個列表可滾動分開) 。*和*我想享受適配器功能和onItemClick()功能*這兩句話自相矛盾。如果你要顯示'ListView'而不滾動(顯示所有內容?),那麼適配器就沒用了,你最好手工建立列表。如果你想要別的東西,請解釋一下。 – Luksprog 2013-05-01 06:14:35

+0

@Luksprog,好吧,說我手動填充列表,雖然適配器是一個很好的方式來做到這一點,我怎樣才能設置每個元素的'onClick()'發送元素在列表中的位置?我是否必須使用數字設置動態ID,然後將它們解析爲int或者是否有更多內置方法?另外'ListView'在點擊元素時有動畫效果,我也必須自己實現呢?我知道有可能自己實現類似於ListView的東西,我只是希望有一些東西可以幫我節省工作。 – tbkn23 2013-05-01 15:25:12

回答

2

我從你期望的假設就是你正在尋找

(標題,(ListView控件))

(標題,(ListView控件))

(標題,(ListView控件))

如果這是你正在尋找的東西,那麼你可以使用tableView作爲主佈局,並且你可以通過給它的固定高度使listView不可滾動。

如何做到這一點,你需要測量每個子視圖的高度和其分隔高度的高度,並將listview的佈局參數設置爲其確切的高度,然後listview將不可滾動,但整個tableview是可滾動的。

我想請你看看這個鏈接。 http://iserveandroid.blogspot.sg/2011/06/how-to-calculate-lsitviews-total.html

一旦你設置佈局內容視圖,您需要將適配器設置爲列表視圖,並立即您需要設置(計算出的高度)的LayoutParams到列表視圖。

+0

我會盡力,雖然我希望有一些不太「黑客」的東西。鏈接中的代碼是否考慮了填充,邊距等? – tbkn23 2013-05-01 15:27:45

+0

是的,它會被考慮在內。 – Mani 2013-05-02 02:07:31

+0

您的建議無效。請參閱編輯過的問題。 – tbkn23 2013-05-02 21:36:29