2014-06-26 18 views
0

我的問題如下:Android的ListView - 擴大到適合整個屏幕,以消除空白空間

我有一個listview與四個元素的時刻。對於大多數屏幕尺寸,這不會佔用整個屏幕,並在下面留下難看的未使用空間。我想展開列表視圖,以便每個項目均勻分隔並且不留空白區域,但一直無法找到解決方案。

下面是我所看到的畫面:

example http://i57.tinypic.com/ok8hw7.jpg

紅色箭頭我把證明我想均勻間距的項目下填寫的空白。

listview是非常基本的,沒有什麼奇特的事情發生。以下是我的xml文件中的一些代碼:

<ListView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#FFFFFF" 
    android:id="@+id/categoryListView"/> 

項目從數據庫填充。我希望有一個簡單的解決方案,但一直沒有找到。任何人都可以幫我解決問題嗎?

+1

您將屏幕高度除以屏幕上需要的項目數量。 –

+0

項目數量是動態的,如果有更多項目(可能會變得擁擠),這可能是一個問題。不過,如果我可以爲每個項目設定最小尺寸,這可能會起作用。我會給它一個機會,並返回我的結果 –

+0

請提供您的列表行的XML –

回答

0

「您將屏幕高度除以屏幕上需要的項目數量。」

@marcelo,你在評論中回答我的問題,所以我不能接受它作爲正確的答案,但通過這樣做,我能夠解決我的問題。這是我做的:

DisplayMetrics displaymetrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); 
minHeight = displaymetrics.densityDpi/(listOfCategories.size()-1); 

首先,我得到了屏幕的度量值(這包括屏幕高度和寬度,但密度是我在這裏使用的)。然後,我將值minHeight設置爲密度除以列表項數減1,這很好地填充了屏幕(儘管它將最後一個項目帶到邊界 - 我需要稍後添加一點填充)。

我那麼做了以下空間列表項均勻:

TextView labelView = (TextView) rowView.findViewById(R.id.label); 
labelView.setMinimumHeight(minHeight); 

設置最小高度保證,如果有幾個列表項目,它們將有一個已經計算出均勻的空間一定高度他們。

我還添加了一些邏輯,以確保在需要滾動的更多列表項目的情況下將minHeight設置爲0。例如,如果有超過4個列表項,它們只會從xml文件設置爲標準高度,並且不需要額外的間距,在這種情況下基本上會忽略minHeight。在XML文件中

android:minHeight="?android:attr/listPreferredItemHeight" 

0

試試這個:

<ListView 
    android:layout_width="match_parent" 
    android:layout_height="0dp" //if it is in a vertical linear layout,remove this comment, when using 
    android:layout_weight="1" 
    android:background="#FFFFFF" 
    android:id="@+id/categoryListView"/> 

當你給的1佈局重量,視圖擴展到所有可能的空間。

但是這也很大程度上取決於您的物品行xml。