2014-02-10 102 views
1

我正在研究廣泛的代碼庫,並且需要爲其大多數ListView添加標題。
我的問題是,標題需要沒有填充,而現有的列表已經有一個20dp填充。
它可以設置列表視圖填充到0dp &重寫所有的列表視圖內容的佈局,但由於這不是最佳選項的代碼庫的大小,所以我正在尋找一種方式,通過代碼來做到這一點:
有不同的填充標題&的內容。有沒有人知道一種方法來做到這一點?列表視圖:用於標題和內容的不同填充

編輯:澄清:我需要該標題是一個標準的listview滾動列表視圖的其餘部分。一個獨立的標題確實是一個微不足道的問題。

+0

您必須爲ListView項目和標題視圖分開佈局。所以,從ListView中刪除填充並將其移動到項目的佈局和標題的佈局。 –

+0

您能否通過放置圖像來解釋這一點,並在那裏表明究竟是什麼問題? –

回答

1

我才發現這樣做的正確方法有效:
設置列表填充爲0,在視圖中創建,例如,當其listfragment初始化:

setPadding(0,0,0,0); 

,並在適配器,設置每個元素的填充:

getViewFor (Item element, int globalPosition, int elementPosition, 
      View convertView, ViewGroup parent) { 
... 
convertView.setPadding(getItemPadding()); 
} 

這樣我可以得到頭&列表本身不同的補白(在我的情況,我想0填充標題)以最小代碼& perf成本計算。

0

要使頭到不同的視圖,然後

mListView.addHeaderView(R.layout.mHeaderView); 
+0

nope,仍然提交到與列表視圖相同的填充 – Teovald

+0

然後不要將你的填充添加到列表視圖,而是將它添加到你的列表視圖項目 –

+0

哦,如果你需要該標題是「粘」,不要將它添加到列表視圖,還是你得到一個listview幾個標題? –

-1

@Artoo是正確的,你能做的最好的事情是有你的ListView上面一個TextView,你可以有任何填充添加到它作爲沒有關聯你的ListView。

下面是我的代碼片段。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical"> 

<TextView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:paddingBottom="20dp" 
    android:text="I am Header"/> 
<ListView 
    android:id="@+id/list" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"  
    > 

</ListView> 

,這裏是我的輸出。 (我知道它看起來怪異),但它的作品。 :) enter image description here

如果您需要進一步的幫助,請告訴我。快樂的編碼。 :)

+0

我不需要粘頭,這確實很容易:)。 – Teovald

+0

您能否添加一段代碼,這將有助於更好地理解問題?如果我正確理解了這種情況,那麼你的列表項有20dp的填充,你不希望頭部有這個。如果這是場景,則應該將填充添加到您在列表中膨脹的佈局。由於您的標題將是一個單獨的視圖,它不會有任何填充效果。讓我知道我是否缺少任何東西。 –

+0

正如問題中所解釋的那樣,我正在研究一個廣泛的代碼庫,因此在爲每種listview項目添加填充確實是更直接的解決方案,在這種情況下,它意味着重寫許多複雜的佈局,因此我正在尋找其他方法。 – Teovald