2013-04-12 8 views
5

Czy jest możliwe dodanie dodatkowej przestrzeni (w rodzaju pustego wiersza) na dole GridView?Dodaj więcej miejsca na dole GridView lub ListView

Chciałbym, żeby tak było, gdy przewiniesz w dół do dołu GridView, pojawi się dodatkowe 50dp pustego miejsca. Próbowałem ustawić paddingBottom na 50dp, ale nic nie zmieniło.

+0

proszę umieścić swój XML lub zrzut ekranu. – Harshid

Odpowiedz

0

Spróbuj dodać paddingBottom do pojemnika zamiast niego. PaddingBottom na liście nie będzie działać, ponieważ listview doda go po ostatnim elemencie, który nie będzie wyświetlany na ekranie. To rodzaj udawania, że ​​ma nieskończoną wysokość.

Innym rozwiązaniem byłoby użycie RelativeLayout i przesunięcie widoku o ustalonej wysokości, ale bez elementów graficznych pomiędzy dnem i GridView, z GridView ustawionym na widok layout_above.

0

spróbować czegoś takiego:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:gravity="center" 
    android:orientation="vertical" > 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="0dip" 
     android:layout_weight="1" 
     android:orientation="vertical" > 

     <GridView 
      android:id="@+id/gridUsers" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:clipChildren="true" 
      android:columnWidth="100dp" 
      android:fastScrollEnabled="true" 
      android:gravity="center" 
      android:numColumns="auto_fit" 
      android:scrollbars="none" 
      android:stretchMode="columnWidth" > 
     </GridView> 

     <TextView 
      android:id="@android:id/empty" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:gravity="center" 
      android:padding="10dp" 
      android:textColor="#f1f1f1" 
      android:textSize="15sp" 
      android:textStyle="bold" 
      android:visibility="gone" > 
     </TextView> 
    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/linlaProgressBar" 
     android:layout_width="fill_parent" 
     android:layout_height="50dp" 
     android:gravity="center" 
     android:orientation="horizontal" > 
    </LinearLayout> 

</LinearLayout> 

Używam tego w aplikacji gdzie LinearLayout z id linlaProgressBar służy jako kontener dla ProgressBar podczas ładowania kolejnych danych.

Ten przykład pokazuje GridView, ale zastąpienie go przez ListView osiągnie ten sam wynik.

0

Za pomocą ListView można dodać stopkę, niestety nie ma na to wsparcia w GridView. Sugerowałbym, że dodanie pustego wiersza o pożądanej wysokości jest najczystszym rozwiązaniem.

1

można realizować własne GridViewAdapter rozciąga ArrayAdapter oraz:

@Override 
public int getCount() { 
    return gridArray.size(); 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    //... 
    if (getCount()-1 == position) { 
     convertView.setPadding(0, 0, 0, 50); 
    } else { 
     convertView.setPadding(0, 0, 0, 0);; 
    } 
    return convertView; 
} 

gdzie 50 to dolny wyściółka w pikselach see View.setPadding(int, int, int, int)

i GridItemView układ maszt być android: layout_height = "wrap_content"

11

Jeśli dobrze cię rozumiem, powinien wyglądać tak:

W tym łatwym rozwiązaniem jest wspomniana przez Maciej: How to add extra space inside at the bottom of a GridView

Wystarczy dodać następujące w układzie GridView:

<GridView 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="50dp" 
android:clipToPadding="false"/> 

Najważniejszą częścią jest atrybutem clipToPadding który musi być ustawiony na false.

Można również zobaczyć, zgodnie z blogu Google, gdzie takie rozwiązanie jest wymienić: https://plus.google.com/+AndroidDevelopers/posts/LpAA7q4jw9M

+0

FYI, duplikaty odpowiedzi nie są preferowane. Zamiast tego powinieneś opublikować pojedynczą odpowiedź i podać ten link dla odniesienia tam, gdzie jest to wymagane. –

+0

Nie skopiowałem samej odpowiedzi z oryginalnej. Poprawiłem to, oddałem kredyt właścicielowi i pokazuję tutaj tę odpowiedź, ponieważ pasuje ona lepiej niż pozostałe. – Elementary

+0

moja średnia z duplikatów odpowiedzi została wysłana same odpowiedzi z tej samej zawartości na Stackoverflow! –

Powiązane problemy