2012-04-12 49 views
34

我已經創建了一個帶有ListView的Android應用程序。我在列表中添加了頁眉和頁腳。但是,添加分隔符/分隔符時,它還會在標題和第一個ListView項目之間創建一個空白空間。它對最後一個ListView項目和頁腳也一樣。列表視圖標題和第一項之間的空白空間

空白空間相當於所有ListView項目之間的分隔符大小,不同之處在於它不繪製分隔符並僅留下空白空間。我以爲我找到了xml屬性的'Footer divider enabled'和'Header divider enabled'的解決方案。但是將它們設置爲false時,它不會改變任何內容。我甚至試圖以編程方式將它們設置爲

list.setFooterDividerEnabled(false); 
list.setHeaderDividerEnabled(false); 

但它只是不起作用。任何方式來解決這個問題?我只是不想空的空間在那裏,我想第一個項目正好符合標題(頁腳相同)。

+0

你可以發佈一些佈局XML或代碼? – 2012-07-26 22:10:13

+0

你有什麼解決方案嗎? – 2012-09-05 18:22:44

+1

以下會幫助你嗎? http://stackoverflow.com/questions/4961999/remove-bottom-divider-of-a-android-listview – Xebozone 2014-11-17 18:54:26

回答

-3

只是做

list.setDividerHeight(0)

這應該照顧它。

+0

這不是答案。這樣做意味着所有的分隔線都消失了,這不是我想要的。 – Niles11 2012-09-26 21:48:11

1

我想這傢伙的solution和它的作品(代碼是基於pulltorefresh):

的XML佈局(header.xml):

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" > 

    <RelativeLayout 
     android:id="@+id/content" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" > 

     <ProgressBar 
      style="@android:style/Widget.ProgressBar.Small.Inverse" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerInParent="true" 
      android:layout_margin="16dp" 
      android:layout_marginTop="2dp" /> 
    </RelativeLayout> 
</LinearLayout> 

當創建視圖:

m_headerView = inflater.inflate(R.layout.header, this, false); 

如果你想展示它,請這樣做:

m_headerView.setPadding(0, 0, 0, 0); 
m_headerView.setVisibility(View.VISIBLE); 

,如果你想隱藏它,這樣做:

m_headerView.setPadding(0, -1000, 0, 0); 
m_headerView.setVisibility(View.GONE); 

它完全在我們的project.hope很有幫助。

+0

您的解決方案隱藏了整個標題,但這不是OP所要求的。 – 2013-07-10 08:46:36

+0

是的,確實如此。我不明白這個問題。我遇到的是,即使隱藏了頭像(設置爲消失),頭像仍然佔據一片空白,我在網上找到了一個解決方案。也許這不是問題所在,但我認爲它對其他一些傢伙仍然有用:) – lucian 2013-07-25 02:12:02

5

我偶然發現了同樣的問題,但情況與您的情況稍有不同。我的ListView有一個標題(搜索框),但它下面的第一個項目包含一個節標題(日期或字母),而不是一個常規列表項(以圖像形式的實際內容,一些文本,等等)。因此,我希望它不能被選擇,所以在我的自定義適配器中,我重寫了areAllItemsEnabled以返回false

大錯,因爲那正是罪魁禍首。看,看起來,在設計上,ListView執行only draw dividers between two enabled items,但仍然保留一個啓用項目和禁用之間的分隔的空間,即使這些分隔將不會被繪製。這是一個有意識的設計決定並不意味着它不是愚蠢的,當然。最奇怪的是,此分隔線圖制定政策僅基於由areAllItemsEnabled返回的值而不是通過對後續項目的單個調用isEnabled返回的值。因此,要解決它,我只需要返回trueareAllItemsEnabled(我保留重寫的方法,並添加一個關於這個問題的評論,否則我將不能記得它從一個月後):lo和看哪,白色空間消失了,被一個分隔物取代。現在,如果我想要將ListView標題和第一節標題顯示爲完全相鄰,則必須選擇與節標題顏色相同的分隔線顏色。

真的很希望您的情況與您的情況相同,或者我的解決方案以其他方式幫助您。

0

在getview方法中,您可以檢查項目是第一個還是最後一個,並設置將爲0高度或單個像素高度的透明色的自定義分隔符。

0

轉到android系統佈局ListView控件的屬性和搜索間距標籤......一些如何在Android中,創建新佈局時,會默認創建的間距頭間距和邊框屬性。檢查它,如果它是可用的,然後刪除它

0

沒有找到一個很好的解決方案。

dividerHeight="0dp"並手動創建了自己的分配器 - 無論是直接在佈局XML或動態的適配器,如果您需要更精確的控制。

相關問題