在Spinner上实现九个补丁图像 - Android

时间:2015-11-19 16:27:33

标签: android xml android-layout

我正在开发一个自定义Spinner,因为我希望微调器中的选定项目出现在圆圈内,但在旋转器的右下角也有通常的三角形。我创建了这样的视图:

<RelativeLayout
    android:layout_width="48dp"
    android:layout_height="48dp"
    android:layout_centerVertical="true"
    android:gravity="center_vertical">
    <Spinner
        android:id="@+id/equationSpinner"
        android:layout_width="28dp"
        android:layout_height="28dp"
        android:background="@drawable/circle"
        android:layout_centerVertical="true"
        android:layout_alignParentLeft="true"
        android:drawSelectorOnTop="true"
        />
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:src="@drawable/spinner_select" />
</RelativeLayout>

@ drawable / spinner_select是另一个xml文件:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="false"
        android:drawable="@drawable/apptheme_spinner_disabled_holo_light" />
    <item android:state_pressed="true"
        android:drawable="@drawable/apptheme_spinner_pressed_holo_light" />
    <item android:state_pressed="false" android:state_focused="true"
        android:drawable="@drawable/apptheme_spinner_focused_holo_light" />
    <item android:drawable="@drawable/apptheme_spinner_default_holo_light" />
</selector>

此xml指的是Spinner的4个状态,并且每个状态具有不同的9个补丁图像。该应用程序运行正常,但似乎总是使用默认图像。如何在按下或禁用微调器时使用其他图像?由于ImageView使用spinner_select xml布局,也许我需要以某种方式将微调器的状态传递给ImageView? 感谢

1 个答案:

答案 0 :(得分:0)

问题是在ImageView中而不是在Spinner中实现选择器。切换drawables并重新格式化工作如下:

<RelativeLayout
    android:layout_width="48dp"
    android:layout_height="48dp"
    android:gravity="center_vertical|start">
    <Spinner
        android:id="@+id/operatorSpinner"
        android:layout_width="48dp"
        android:layout_height="48dp"
        android:src="@drawable/spinner_select"
        android:layout_alignParentBottom="true"
        android:layout_alignParentEnd="true"
        android:drawSelectorOnTop="true"
        />
    <ImageView
        android:layout_marginStart="2dp"
        android:id="@+id/ivOperatorSpinner"
        android:layout_width="28dp"
        android:layout_height="28dp"
        android:layout_centerVertical="true"
        android:layout_alignParentStart="true"
        android:background="@drawable/circle" />
</RelativeLayout>