次のように、Spinner ドロップダウン項目に波及効果を適用しようとしました。
アクティビティ.java
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
this, R.array.array_name, R.layout.simple_spinner_dropdown_item);
adapter.setDropDownViewResource(R.layout.simple_spinner_dropdown_item);
Spinner mSpinner = (Spinner) findViewById(R.id.spinner);
mSpinner.setAdapter(adapter);
simple_spinner_dropdown_item.xml
<?xml version="1.0" encoding="utf-8"?>
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/spinner_ripple"
android:ellipsize="marquee"
android:gravity="center_horizontal"
android:padding="10dip"
android:singleLine="true"
android:textSize="14sp" />
spinner_ripple.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<ripple android:color="?android:attr/colorControlHighlight">
<item><shape>
<solid android:color="@android:color/white" />
</shape>
</item>
</ripple>
</item>
</selector>
ただし、ドロップダウンリストでは、最初のアイテムに対してのみ機能し、現在選択されているアイテムが最初のアイテムとは別のアイテムである場合にのみ機能します。それ以外の場合はすべて、背景アイテムを波紋色で塗りつぶします (波及効果はありません)。私のコードはどこが間違っていますか?
すでに試しました:次のように、ドロップダウンアイテムレイアウトの背景に固定色を設定し、スピナー要素の下に波及効果を移動することはできません:
simple_spinner_dropdown_item.xml
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/white"
android:ellipsize="marquee"
android:gravity="center_horizontal"
android:padding="10dip"
android:singleLine="true"
android:textSize="14sp" />
activity_layout.xml
<Spinner
android:id="@+id/spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawSelectorOnTop="true"
android:dropDownSelector="@drawable/spinner_ripple" />