Android微调器下拉项目波纹背景

时间:2016-04-28 02:40:17

标签: java android material-design android-spinner

我有一个使用自定义弹出菜单设置的微调器。此弹出菜单有圆角。当您在微调器中点击一个选项时,它会显示波纹背景动画,但是波纹会在圆角外部形成一个普通的矩形。我怎样才能使波纹保持在圆角矩形的边界内?

弹出式背景:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
   android:shape="rectangle">
<solid android:color="@color/primaryLight2"/>
<corners android:radius="4dp"/>

微调:

<Spinner
        android:id="@+id/spinner"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="24dp"
        android:layout_marginStart="4dp"
        android:gravity="start|center_vertical"
        android:popupBackground="@drawable/background_spinner_popup"
        android:textColor="@color/primaryText"
        android:textSize="18sp"/>

下拉项目:

<TextView android:id="@android:id/text1"
      style="@style/spinnerDropDownItemStyle"
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:ellipsize="marquee"
      android:padding="8dp"
      android:textSize="18sp"
      android:background="@drawable/background_spinner_item_dropdown"
      android:singleLine="true"
      android:textColor="@color/white"/>

下拉项目背景:

<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="?android:colorControlHighlight">

<!-- Default background -->
<item>
    <shape android:shape="rectangle">
        <corners android:radius="4dp"/>
    </shape>
</item>

<!-- Ripple bounds -->
<item android:id="@android:id/mask">
    <shape android:shape="rectangle">
        <corners android:radius="4dp"/>
    </shape>
</item>

设置微调器:

final Spinner spinner = (Spinner) rootView.findViewById(R.id.spinner);
ArrayAdapter arrayAdapter = ArrayAdapter.createFromResource(MainActivity.context, R.array.spinner, R.layout.item_spinner);
arrayAdapter.setDropDownViewResource(R.layout.item_spinner_dropdown);
spinner.setAdapter(arrayAdapter);

默认情况下,即使我删除了自定义波纹背景,这些项目也似乎已经有了波纹背景。

0 个答案:

没有答案