2015-01-11 39 views
1

我現在嘗試兩天創建工作GridView,但它不會工作,這是它的樣子:的Android GridView的文本重疊

enter image description here

你看,我的問題是重疊的文本。 我已經發現,GridView行的高度由最後一項設置。 我的XML看起來如此:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".Startbildschirm"> 


    <GridView 
     android:numColumns="2" 
     android:gravity="center" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/listView" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" 
     android:horizontalSpacing="5dp" 
     android:verticalSpacing="5dp" 
     /> 
</RelativeLayout> 

我的想法來解決這個問題是要獲得最長的視線的高度在一排,然後將其設置爲向了minHeight最後視圖。我的問題是,這些視圖只有在它們可見時才被保存,所以在向下滾動時,高度又不同。 有沒有人有一個想法如何解決這個問題?

+0

如果我理解你的問題,2列中的單元格不是相同的高度,但行高是第二列中項目的高度? – njzk2

回答

1

您的問題在於gridViewItem佈局(一個你在適配器膨脹) 不與GridView控件,我相信的有

android:layout_height="wrap_content" 

地方, 剛剛設置的佈局高度那裏有一個固定的金額dp

(android:layout_height ="10dp" for instance) 

那麼你不會有問題。基於評論

編輯: 2個選項 - 1)如果列表心不是很長只是用tableLayout和填充行代碼,(負的是,它沒有按recicle意見,併爲此花費比GridView的更多的內存)但它應該得到你想要的效果(每行使用換行內容並調整爲文本的長度)

2)適配器使用某種列表 - 使用網格之前運行它並獲取最大值高度,現在創建一個自定義適配器,使用getView()中的(最大高度)來返回approprite視圖(所有視圖都足夠大,以滿足最大長度)

+0

這是行不通的,因爲視圖的高度取決於在文本框中設置的文本的長度:/ – ich5003

+0

@ ich5003定義了一個集合大小的文本框在其溢出時不會顯示文本,視圖的大小取決於文本,因爲你如何定義它我假設(共享項目佈局生病肯定看到)在任何情況下,你可以創建一個方法,沿着(如果(s.length> max)那麼s = s.subString(0,maxChars))這樣你的文本的每個視圖的大小相同 –

+0

你是對的,視圖的高度取決於文本。 但我無法改變這種情況,因爲文本有時會有所不同,並且必須顯示整個文本,所以我不能將其剪切。 我的問題是不設置靜態高度視圖,我正在尋找解決方案,將一個ROW的MinHeight設置爲最長視圖的高度。 也許我描述我的問題有點不對,但thx爲你的幫助,雖然:) – ich5003

3

另一個解決方案是保持細胞的母體爲wrap_content,但在限制的TextView到例如2或3行android:lines="2" 在網格視圖此所有視圖將具有相同的尺寸。