我正在开发一个自定义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? 感谢
答案 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>