389 Stimmen

Wie man den Abstand zwischen listView-Elementen in Android einstellt

Ich habe versucht, marginBottom auf der listView verwenden, um Platz zwischen listView Element zu machen, aber immer noch die Elemente sind zusammen angehängt.

Ist das überhaupt möglich? Wenn ja, gibt es einen bestimmten Weg, dies zu tun?

Mein Code lautet wie folgt

<LinearLayout
android:id="@+id/alarm_occurences"
android:layout_width="fill_parent" 
android:orientation="vertical"
android:layout_height="fill_parent"
android:background="#EEEEFF"
xmlns:android="http://schemas.android.com/apk/res/android">

<ListView
android:id="@+id/occurences"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>

Mein benutzerdefinierter Listeneintrag:

<com.android.alarm.listItems.AlarmListItem
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" 
android:background="@drawable/alarm_item_background"
android:layout_marginBottom="10dp"    
>
<CheckedTextView     
    android:id="@android:id/text1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center_vertical"
    android:checkMark="?android:attr/listChoiceIndicatorMultiple"
    android:textSize="20sp"
    android:textStyle="bold"
    android:typeface="serif"
    android:padding="10dp"

/>

</com.android.alarm.listItems.AlarmListItem>

Wie kann ich in diesem Fall Abstände zwischen den Listenelementen schaffen?

2voto

Sufian Punkte 6215

Die einfachste Lösung mit dem vorhandenen Code von OP (Listenelemente haben bereits Polsterung) ist, folgenden Code hinzuzufügen:

listView.setDivider(new ColorDrawable(Color.TRANSPARENT));  //hide the divider
listView.setClipToPadding(false);   // list items won't clip, so padding stays

Diese SO hat mir die Antwort geholfen.

Auf älteren Plattformen kann es vorkommen, dass das Listenelement zu früh recycelt wird, wie bereits gefragt wurde aquí .

1 Stimmen

Können Sie divider auf null und dividerHeight auf einen Wert Ihrer Wahl setzen.

1 Stimmen

@Andy Ich denke, es wird auch die Polsterung zwischen den Elementen entfernen. Das wird das Problem schaffen, das der OP lösen wollte.

2voto

pawan kumar Punkte 61

Sie müssen nur den Hintergrund des Listenteilers transparent machen und die Höhe entsprechend dem benötigten Abstand einstellen.

<ListView 
         android:id="@+id/custom_list"
         android:layout_height="match_parent"
         android:layout_width="match_parent"
         android:divider="#00ffffff"
         android:dividerHeight="20dp"/>

1voto

Andrew Gallasch Punkte 2540
<ListView
    android:clipToPadding="false"
    android:paddingTop="10dp"
    android:paddingBottom="10dp"
    android:dividerHeight="10dp"
    android:divider="@null"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
</ListView>

und setzen paddingTop , paddingBottom y dividerHeight auf denselben Wert setzen, um gleiche Abstände zwischen allen Elementen und Leerzeichen am oberen und unteren Rand der Liste zu erhalten.

Ich setze clipToPadding a false um die Ansichten in diesem gepolsterten Bereich zeichnen zu lassen.

Ich setze divider a @null um die Linien zwischen den Listenelementen zu entfernen.

1voto

FingerSmith Punkte 379

Eine weitere Möglichkeit, die Abstände zwischen den Listenelementen zu vergrößern, besteht darin, eine leere Ansicht zu Ihrem Adaptercode hinzuzufügen, indem Sie das layout_height-Attribut mit den gewünschten Abständen versehen. Um z.B. den unteren Abstand zwischen den Listenelementen zu vergrößern, fügen Sie diesen Dummy-View (leerer View) an das Ende Ihrer Listenelemente.

<View
    android:layout_width="match_parent"
    android:layout_height="15dp"/>

Damit ergibt sich ein unterer Abstand von 15 dp zwischen den Elementen der Listenansicht. Sie können dies direkt hinzufügen, wenn das übergeordnete Layout LinearLayout ist und die Ausrichtung vertikal ist oder entsprechende Schritte für andere Layouts unternehmen. Ich hoffe, das hilft :-)

1voto

Akanshi Srivastava Punkte 1060

So können Sie die Höhe der Trennwand hinzufügen.

 getListView().setDividerHeight(10)

Wenn Sie eine benutzerdefinierte Ansicht hinzufügen möchten, können Sie eine kleine Ansicht in das listView-Elementlayout selbst einfügen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X