2016-03-09 8 views
0

Как настроить пользовательские разделители для GridView?
Я имею в виду, что есть элемент .png с этим разделителем синего градиента, но как его поместить в GridView в нужном месте?Подходящие разделители для GridView

Поиск через Интернет не принесет никаких жизнеспособных результатов ..

Expectation:

enter image description here

Reality:

enter image description here

GridView обертка XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="@color/primary_blue_dark" 
android:orientation="vertical"> 

.... 

<GridView 
    android:id="@+id/gv_stock" 
    android:paddingEnd="@dimen/activity_horizontal_margin" 
    android:paddingStart="@dimen/activity_horizontal_margin" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:stretchMode="columnWidth" 
    android:numColumns="2"/> 
</LinearLayout> 

GridView элемент XML:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="@color/primary_blue_dark" 
style="@style/padded_layout" 
android:weightSum="2"> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" 
    android:layout_weight="1"> 

    <TextView 
     android:id="@+id/tv_title" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     style="@style/teal_text_middle" 
     android:gravity="center" 
     android:text="test"/> 

</LinearLayout> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" 
    android:layout_weight="1" 
    android:gravity="center"> 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:orientation="vertical" 
     android:weightSum="2"> 
     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_weight="0.7"/> 
     <ImageView 
      android:id="@+id/iv_arrow" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_gravity="bottom" 
      android:layout_weight="1.3" 
      android:src="@drawable/ic_arrow_green"/> 
    </LinearLayout> 

    <TextView 
     android:id="@+id/tv_value" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     style="@style/white_text_big" 
     android:gravity="center" 
     android:text="test"/> 
</LinearLayout> 

</LinearLayout> 
+0

@BobMalooga, вы хотите сделать вот так? 'Андроид: фон = "@ вытяжка/ic_separator_horizontal"'. Это отлично работает для горизонтальной градиентной линии. Но как мне вставить такие элементы между столбцами? градиент должен растягиваться только через одну строку. – AnZ

+0

Да, у меня есть идея. Но это скорее обходной путь. Было бы трудно создать такой градиент, который будет точно посередине каждой строки. Я имею в виду, что это не подходило бы для каждого размера экрана. – AnZ

+0

@BobMalooga, я был бы благодарен, если вы опубликуете ответ таким способом решения проблемы.Потому что я действительно не понимаю, как использовать эти 2 меньших градиента – AnZ

ответ

1

Используйте GridLayoutManager с Recyclerview и добавьте товарную пометку из следующих gist. Вы можете изменить смещение в соответствии с вашими требованиями.

+0

Спасибо, что дает ожидаемое поведение с несколькими модификациями – AnZ

1

Используя этот ответ here и просто изменяя серый сплошной цвет цвет фона для изображения, как этот (я поставил его для разрешения hdpi - но он должен хорошо растягиваться и вверх, и вниз),

enter image description here

вы должны получить такой эффект, как это (здесь это на ldpi устройство, так масштабируется вниз в два раза):

enter image description here

, который не слишком далеко от того, что вы ищете.

Это работает, по крайней мере, в принципе. Это может потребовать некоторой настройки (сужения вертикальной центральной части), но у вас есть концепция. Возможно, вы также захотите закрыть часть верхней части (и, возможно, нижней части), чтобы скрыть трюк.

С помощью простого эффекта «просмотреть» вы можете избежать возиться со стилями/темами.


[EDIT]

Да, я знаю, это MAINZ, не Майнце (но, хорошо ... произносят действительно то же самое! Спешите это плохой советчик, вы знаете).