2016-10-19 4 views
0

У меня есть простой RecyclerView, в котором каждая строка отображает строку текста. Каждая строка выбирается, и поэтому я хочу использоватьКомбинация selectableItemBackground с формой для финального фона

android:background="?attr/selectableItemBackground" 

Проблема заключается в том, что RecyclerViews не позволяют делителей; тогда как я хочу делителей. Поэтому мне нужен фон, как показано ниже (под названием bottom_line.xml)

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item 
     android:bottom="1dp" 
     android:left="-2dp" 
     android:right="-2dp" 
     android:top="-2dp"> 
     <shape android:shape="rectangle" > 
      <stroke 
       android:width="1dp" 
       android:color="#FF000000" /> 

      <solid android:color="#00FFFFFF" /> 

      <padding android:left="10dp" 
       android:right="10dp" 
       android:top="10dp" 
       android:bottom="10dp" /> 
     </shape> 
    </item> 

</layer-list> 

Моего вопроса заключается в том, как я могу объединить мой bottom_line.xml с ?attr/selectableItemBackground создать окончательную вытяжку с рябью? (Я пытаюсь избежать использования TextView внутри LinearLayout)

+0

вы хотите добавить эффект ряби в файл 'bottom_lin e.xml' через xml, правильно? –

ответ

0

Вы можете добавить разделители несколькими способами.

Один из способов заключается в том, что ваш макет ячейки может иметь в себе разделитель, который представляет собой только вид с высотой 1dp и серым фоном. Поэтому вам не нужно беспокоиться о объединении фоновых рисунков.

0

RecyclerView действительно позволяет использовать разделители.

Добавить класс DividerItemDecoration для реализации чертежа, например. https://gist.github.com/alexfu/0f464fc3742f134ccd1e

Используйте addItemDecoration на своем RecyclerView.

myRecyclerView.addItemDecoration(new DividerItemDecoration(mContext, DividerItemDecoration.VERTICAL_LIST, R.drawable.divider)); 

Установите делитель вытяжку, этот пример имеет левый и правые вставки и градиент

<?xml version="1.0" encoding="utf-8"?> 
<inset xmlns:android="http://schemas.android.com/apk/res/android" 
    android:insetLeft="16dp" 
    android:insetRight="16dp"> 

    <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> 
     <gradient android:startColor="@color/dividerEdge" android:centerColor="@color/dividerCenter" android:endColor="@color/dividerEdge" android:angle="0" /> 
    </shape> 

</inset> 

В качестве альтернативы, вы можете добавить мультипликационный эффект (API 21+) к вашему XML, добавив:

<ripple android:color="@color/somecolor"> 
    <item> ... </item> 
</ripple> 

, хотя, кажется, что вы, возможно, не нужно это ...

Смежные вопросы