Come assegnare l'imbottitura alla linea di divisione degli elementi di Listview
Come posso dare l'imbottitura alla voce di elenco come mostro nell'image. Voglio fare il divisore nel layout come mostrato nell'image.
questo è il mio codice di frammento di elenco
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_marginLeft="25dp" android:layout_marginRight="25dp"> <ListView android:layout_height="wrap_content" android:layout_width="fill_parent" android:id="@+id/listV_main" android:layout_marginLeft="25dp" android:layout_marginRight="25dp"/>
Questo è il mio codice di sezione dell'elenco
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" android:paddingLeft="10dp" android:paddingTop="10dp" android:paddingRight="10dp" android:paddingBottom="10dp"> <include android:id="@+id/list_item_section_text" layout="@android:layout/preference_category" />
Questo è il mio codice articolo dell'elenco
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:minHeight="?android:attr/listPreferredItemHeight" android:adjustViewBounds="true" android:paddingRight="?android:attr/scrollbarSize" > <ImageView android:id="@+id/showlist_item_entry_drawable" android:layout_width="82dp" android:adjustViewBounds="true" android:layout_height="68dp" android:scaleType="fitXY" android:paddingLeft="9dp"/> <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dip" android:layout_marginRight="6dip" android:layout_marginTop="6dip" android:layout_marginBottom="6dip" android:layout_weight="1" > <TextView android:id="@+id/list_item_entry_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:singleLine="true" android:textAppearance="?android:attr/textAppearanceLarge" android:ellipsize="marquee" android:fadingEdge="horizontal" /> <TextView android:id="@+id/list_item_entry_summary" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/list_item_entry_title" android:layout_alignLeft="@id/list_item_entry_title" android:textAppearance="?android:attr/textAppearanceSmall" android:singleLine="true" android:textColor="?android:attr/textColorSecondary" /> </RelativeLayout>
6 Solutions collect form web for “Come assegnare l'imbottitura alla linea di divisione degli elementi di Listview”
Usa 'inset' …..
(List_divider.xml)
<?xml version="1.0" encoding="UTF-8"?> <inset xmlns:android="http://schemas.android.com/apk/res/android" android:insetLeft="50dp" android:insetRight="50dp" > <shape> <solid android:color="@color/orange" /> <corners android:radius="2.0dip" /> </shape> </inset>
e nella tua list visualizza aggiungi come questo …
<ListView android:dividerHeight="2dp" android:divider="@drawable/list_divider" ... />
è ansible impostare il valore di inserimento desiderato …
AGGIORNARE
Come sottolineato da @Giulio Piancastelli, Se lo background del contenitore di liste è diverso da quello di background dell'elenco, allora puoi usare 'liste di livello' …
(List_divider.xml)
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item> <shape android:shape="rectangle" > <solid android:color="@color/list_background" /> </shape> </item> <item android:left="10dp" android:right="10dp"> <shape android:shape="rectangle" > <solid android:color="@color/divider_color"/> </shape> </item> </layer-list>
e nella tua list visualizza aggiungi come questo …
<ListView android:dividerHeight="2dp" android:divider="@drawable/list_divider" ... />
Hai bisogno di imbottitura per i divisori? Crea il tuo disegno disegnato personalizzato come:
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:left="10dp" android:right="10dp"> <shape android:shape="rectangle" > <solid android:color="@android:color/black" /> </shape> </item> </layer-list>
E impostato come divisore per il tuo ListView in xml:
<ListView android:dividerHeight="2dp" android:divider="@drawable/custom_divider" ... />
UPD
Ho solo ListView
in xml:
<ListView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/list" android:layout_width="match_parent" android:layout_height="match_parent" android:dividerHeight="2dp" android:divider="@drawable/line" />
Divisore come line.xml
in line.xml
:
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:left="10dp" android:right="10dp"> <shape android:shape="rectangle" > <solid android:color="@android:color/black" /> </shape> </item> </layer-list>
Non apportre alcuna modifica al codice di ListView
. Puoi provare a utilizzare Clean se le risorse sono sbagliate edificate.
Come @Giulio Piancastelli citato sotto la risposta @ASP, il <inset>
non riesce quando il colore di background del contenitore di liste non è uguale alle righe all'interno dell'elenco. Una soluzione è quella di utilizzare <layer-list>
come sotto:
//This item is to overlay the container colour with the row background colour <item android:left="0dp" android:right="0dp"> <shape android:shape="rectangle" > <solid android:color="@color/row_background" /> </shape> </item> //This item is the divider, put it at bottom so it will overlay the background colour <item android:left="92dp" android:right="0dp"> <shape android:shape="rectangle" > <solid android:color="@color/divider </shape> </item>
Poi puoi impostarlo come divisore come suggerisce la maggior parte delle risposte:
<ListView android:dividerHeight="2dp" android:divider="@drawable/layer_list" ... />
Nel vostro listitem dare il paddingtop al layout principale come
<?xml version="1.0" encoding="utf-8"?> <LinearLayout android:padding="10dp" ....// Remaining fields > ... //Remaining items </LinearLayout>
questa dovrebbe essere una soluzione alternativa per questa domanda:
<View android:layout_width="match_parent" android:layout_height="1dp" android:layout_alignParentBottom="true" android:background="color/secondary_text" android:layout_marginTop="16dp" />
impostare l'altezza e il colore del divisore degli elementi di elenco:
<ListView android:layout_height="wrap_content" android:layout_width="fill_parent" android:id="@+id/listV_main" android:layout_marginLeft="25dp" android:layout_marginRight="25dp" android:divider="@android:color/darker_gray" android:dividerHeight="1dp"/>