簡體   English   中英

如何從 Spinner 中的 drawable 設置下拉箭頭?

[英]How to set dropdown arrow from drawable in spinner?

我試圖在 Spinner 中將 drawable 設置為箭頭,但不支持位圖。

我使用了 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 時出錯:“myapp:layout/activity_registration_driver 中的二進制 XML 文件第 41 行:錯誤膨脹類 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>

輸出:

在此處輸入圖片說明

基本上需要為微調器創建自定義背景。 它應該是這樣的: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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM