Подтвердить что ты не робот

Разделители разделов Android GridView

Я хотел бы узнать самый простой способ рисования разделителей между элементами (в настоящее время textviews) в GridView. Единственный способ, который я могу придумать, - это нарисовать границы вокруг этих текстовых изображений, поэтому при объединении они выглядят как непрерывные горизонтальные и вертикальные разделители.

Существует список setDivider() для списков, но не gridviews?

Спасибо.

4b9b3361

Ответ 1

К сожалению, посмотрев исходный код, я не мог найти простого способа добавления границ, кроме подхода добавления границ к каждой ячейке. В качестве ссылки я отправлю свое решение здесь.

list_item.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="fill_parent"
    android:orientation="horizontal"
    android:background="@drawable/list_selector">

    <!-- Cell contents -->

</LinearLayout>

list_selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item 
        android:state_selected="true" 
        android:drawable="@drawable/item_border_selected" 
    />
    <item 
        android:state_pressed="true" 
        android:drawable="@drawable/item_border_selected" 
    />
    <item
        android:drawable="@drawable/item_border" 
    />
</selector>

item_border.xml

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid 
        android:color="@android:color/transparent" 
    />
    <stroke 
        android:width="1px" 
        android:color="@color/list_divider" 
    />
</shape>

item_border_selected.xml

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid 
        android:color="@color/list_select" 
    />
    <stroke 
        android:width="1px" 
        android:color="@color/list_divider" 
    />
</shape>

items_view.xml

<?xml version="1.0" encoding="utf-8"?>
<GridView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_marginLeft="-1px"
    android:layout_marginRight="-1px"
    android:listSelector="@android:color/transparent"
/>

Поскольку все строки удваиваются по мере их присоединения к соседним ячейкам, я сделал размер разделителя 1px вместо 1dp, поэтому на некоторых экранах он не выглядит слишком большим. Кроме того, я сделал сетку с отрицательными полями, чтобы скрыть линии с обеих сторон. Я надеюсь, что это помогает кому-то.

Ответ 2

Если вам нужны только простые строки в качестве границ, гораздо проще задать цвет фона для GridView и правильное заполнение и интервал:

<GridView
    (...)
    android:background="@color/LightGold"
    android:listSelector="@android:color/transparent"
    android:horizontalSpacing="1dip"
    android:verticalSpacing="1dip"
    android:paddingLeft="1dip"
    android:paddingTop="1dip" />