2016-04-25 4 views
0

Ich habe eine Autocomplete-Textview mit dem folgenden Layout für die Elemente (Textview)sich allmählich ausbreitende Wirkung auf die automatische Vervollständigung der Dropdown-Liste

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginLeft="@dimen/activity_horizontal_margin" 
      android:gravity="center_vertical" 
      android:orientation="vertical"> 

<TextView 
    android:id="@+id/suggestion" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:gravity="center_vertical" 
    android:minHeight="?android:attr/listPreferredItemHeightSmall" 
    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd" 
    android:paddingLeft="?android:attr/listPreferredItemPaddingLeft" 
    android:paddingRight="?android:attr/listPreferredItemPaddingRight" 
    android:paddingStart="?android:attr/listPreferredItemPaddingStart" 
    android:textAppearance="?android:attr/textAppearanceListItemSmall" 
    android:textColor="@color/black"/> 

<View 
    android:layout_width="match_parent" 
    android:layout_height="1dp" 
    android:background="?android:attr/listDivider"/> 
</LinearLayout> 

Wenn die Dropdown-Liste zeigt, ist der Hintergrund ist grau und wenn ich auf und halten Sie auf ein Item gibt es Ripple-Effekt zeigt. Den Welligkeitseffekt als Standard zu haben ist großartig, aber wie kann ich den Hintergrund auf Weiß setzen und gleichzeitig den Welleneffekt beibehalten?

Antwort

1

Du wirst wollen Ihre Ripple

drawable-v21/list_item_ripple.xml

<?xml version="1.0" encoding="utf-8"?> 
<ripple xmlns:android="http://schemas.android.com/apk/res/android" 
    android:color="@android:color/blue"> 
    <item android:drawable="@layout/regular_list_background"/> 
</ripple> 

layout/regular_list_background.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <solid android:color="@android:color/white" /> 
</shape> 

Und dann setzen Sie diese als Hintergrund für Ihre LinearLayout definieren:

android:background="@drawable/list_item_ripple" 

Offensichtlich können Sie die Farben, was auch immer ändern für Sie am besten passt

+0

um das ripple xml-tag zu verwenden, muss ich meine min sdk version auf 21 setzen. Und das möchte ich wenn möglich vermeiden. – edmond

+0

Deshalb habe ich gesagt, es in den Ordner "Drawable-v21" zu legen. Sie können dasselbe Layout im Ordner 'drawable' mit dem normalen Verhalten' drawable/state_pressed' definieren – NSimon

1

Einstellen der popupBackground Attribut des AutocompleteTextview wie unten mein Problem löst.

Berühren von Elementen der Dropdown-Liste löst die Ripple-Animation aus, obwohl ich keine definiert habe. Es scheint, als ob die Ripple-Animation standardmäßig eingebaut ist. Ich teste mit einem API Level 21-Gerät.