如何在微调器中设置下拉箭头?
How to set dropdown arrow from drawable in spinner?
我正在尝试将可绘制对象设置为微调器中的箭头,但不支持位图。
我使用了 svg 文件 (ic_arrow.xml) 并将其设置在 spinner_arrow.xml
文件中:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<padding
android:left="4dp"
android:top="4dp"
android:right="4dp"
android:bottom="4dp"
/>
<solid android:color="@color/white" />
<stroke android:width="2px" android:color="@color/grey" />
<corners android:radius="5dp" />
</shape>
</item>
<item>
<bitmap android:gravity="center|right" android:src="@drawable/ic_arrow"/>
</item>
</layer-list>
所以我用它作为布局文件中的背景
<Spinner
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="@drawable/spinner_arrow"/>
但是我在显示 Spinner 时出错:"Binary XML file line #41 in myapp:layout/activity_registration_driver: Error inflating class Spinner"。
我认为问题在于在微调器中为箭头添加可绘制对象,但我不知道如何解决
请使用以下代码添加带微调器的箭头:
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="@dimen/btn_height_common"
android:layout_marginLeft="@dimen/_15sdp"
android:layout_marginTop="@dimen/_5sdp"
android:layout_marginRight="@dimen/_15sdp"
android:background="@drawable/bg_editext">
<Spinner
android:id="@+id/sp_gender"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@null"
android:entries="@array/gender"
android:fontFamily="@font/gotham_narrow_book"
android:overlapAnchor="false"
android:paddingLeft="@dimen/_10sdp"
android:paddingRight="@dimen/_10sdp"
android:textColor="@color/gray_text_color"
android:textSize="@dimen/normal_textsize" />
<ImageView
android:layout_width="@dimen/_15sdp"
android:layout_height="@dimen/_15sdp"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="@dimen/_15sdp"
android:padding="@dimen/_2sdp"
android:src="@mipmap/ic_down_gray" />
</RelativeLayout>
输出:
基本上需要为微调器创建自定义背景。它应该类似于 this:spinner_background.xml
<item>
<layer-list>
<item>
<color
android:color="@android:color/white"/>
</item>
<item>
<bitmap
android:gravity="center_vertical|right"
android:src="@drawable/ic_arrow_drop_down_black_24dp"/>
</item>
</layer-list>
</item>
然后为您的微调器创建一个自定义样式,您可以在其中将上述选择器指定为背景:
<style name="Widget.App.Spinner" parent="@style/Widget.AppCompat.Spinner">
<item name="overlapAnchor">true</item>
<item name="android:background">@drawable/spinner_background</item>
</style>
最后,在您的应用主题中,如果您希望在整个应用中应用它,您应该覆盖两个属性:
<item name="spinnerStyle">@style/Widget.App.Spinner</item>
<item name="android:spinnerStyle">@style/Widget.App.Spinner</item>
我正在尝试将可绘制对象设置为微调器中的箭头,但不支持位图。
我使用了 svg 文件 (ic_arrow.xml) 并将其设置在 spinner_arrow.xml
文件中:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<padding
android:left="4dp"
android:top="4dp"
android:right="4dp"
android:bottom="4dp"
/>
<solid android:color="@color/white" />
<stroke android:width="2px" android:color="@color/grey" />
<corners android:radius="5dp" />
</shape>
</item>
<item>
<bitmap android:gravity="center|right" android:src="@drawable/ic_arrow"/>
</item>
</layer-list>
所以我用它作为布局文件中的背景
<Spinner
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="@drawable/spinner_arrow"/>
但是我在显示 Spinner 时出错:"Binary XML file line #41 in myapp:layout/activity_registration_driver: Error inflating class Spinner"。
我认为问题在于在微调器中为箭头添加可绘制对象,但我不知道如何解决
请使用以下代码添加带微调器的箭头:
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="@dimen/btn_height_common"
android:layout_marginLeft="@dimen/_15sdp"
android:layout_marginTop="@dimen/_5sdp"
android:layout_marginRight="@dimen/_15sdp"
android:background="@drawable/bg_editext">
<Spinner
android:id="@+id/sp_gender"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@null"
android:entries="@array/gender"
android:fontFamily="@font/gotham_narrow_book"
android:overlapAnchor="false"
android:paddingLeft="@dimen/_10sdp"
android:paddingRight="@dimen/_10sdp"
android:textColor="@color/gray_text_color"
android:textSize="@dimen/normal_textsize" />
<ImageView
android:layout_width="@dimen/_15sdp"
android:layout_height="@dimen/_15sdp"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="@dimen/_15sdp"
android:padding="@dimen/_2sdp"
android:src="@mipmap/ic_down_gray" />
</RelativeLayout>
输出:
基本上需要为微调器创建自定义背景。它应该类似于 this:spinner_background.xml
<item>
<layer-list>
<item>
<color
android:color="@android:color/white"/>
</item>
<item>
<bitmap
android:gravity="center_vertical|right"
android:src="@drawable/ic_arrow_drop_down_black_24dp"/>
</item>
</layer-list>
</item>
然后为您的微调器创建一个自定义样式,您可以在其中将上述选择器指定为背景:
<style name="Widget.App.Spinner" parent="@style/Widget.AppCompat.Spinner">
<item name="overlapAnchor">true</item>
<item name="android:background">@drawable/spinner_background</item>
</style>
最后,在您的应用主题中,如果您希望在整个应用中应用它,您应该覆盖两个属性:
<item name="spinnerStyle">@style/Widget.App.Spinner</item>
<item name="android:spinnerStyle">@style/Widget.App.Spinner</item>