android - 更改微调器下拉图标

标签 android android-spinner

我发现的解决方案可以更改所有的微调器下拉图标:

1.创建自定义可绘制对象

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/vector_drawable_ic_dropdown_black" android:state_focused="true" android:state_pressed="false" />
    <item android:drawable="@drawable/vector_drawable_ic_dropdown_black" android:state_focused="true" android:state_pressed="true" />
    <item android:drawable="@drawable/vector_drawable_ic_dropdown_black" android:state_focused="false" android:state_pressed="true" />
    <item android:drawable="@drawable/vector_drawable_ic_dropdown_black" />
</selector>

<强>2。将可绘制对象设置为微调器背景:

<Spinner
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginBottom="16dp"
    android:background="@drawable/custom_spinner_icon"
    android:gravity="center"
    android:paddingBottom="8dp"
    android:paddingTop="8dp"
    android:textColor="@color/textcolorprimary" />

结果是:

enter image description here

正如您所见,这不是一个可接受的解决方案,因为图标需要右对齐而不是拉伸(stretch)。

如何使图标不拉伸(stretch)并正确对齐?

编辑

由于还没有可行的解决方案,我想我必须指定我的问题。 这是我的 Spinner 使用标准主题的外观:

<Spinner
    android:id="@+id/products_download_spinner_language"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginBottom="16dp"
    android:gravity="center"
    android:paddingBottom="8dp"
    android:paddingTop="8dp"
    android:textColor="@color/textcolorprimary"
    android:theme="@android:style/Theme.Holo.Light.DarkActionBar" />

enter image description here

而我想要的一切(我猜这真的不多)正在改变箭头。我不希望显示右下角的那个箭头,我希望这个箭头垂直居中显示在右边:

enter image description here

到目前为止我尝试过的每一个解决方案:

Spinner Dropdown Arrow

How to set dropdown arrow in spinner?

只是没有工作。他们有拉伸(stretch)图标或底线丢失或其他完全错误的东西。我只是想要另一个箭头。

最佳答案

尝试将以下样式应用于您的微调器

style="@style/SpinnerTheme"

//微调器样式:

<style name="SpinnerTheme" parent="android:Widget.Spinner">
    <item name="android:background">@drawable/bg_spinner</item>
</style>

//bg_spinner.xml 用你的箭头替换 arrow_down_gray

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

    <item>

        <layer-list>

            <item>
                <shape>
                    <gradient android:angle="90" android:endColor="#ffffff" android:startColor="#ffffff" android:type="linear" />

                    <stroke android:width="0.33dp" android:color="#0fb1fa" />

                    <corners android:radius="0dp" />

                    <padding android:bottom="3dp" android:left="3dp" android:right="3dp" android:top="3dp" />
                </shape>
            </item>

            <item android:right="5dp">

                <bitmap android:gravity="center_vertical|right" android:src="@drawable/arrow_down_gray" />

            </item>

        </layer-list>

    </item>

</selector>

关于android - 更改微调器下拉图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37411637/

相关文章:

android - 如何在ListView中显示SD卡上的文件?

android - android.support.v7.widget.Toolbar 无法转换为 android.widget.Toolbar 的原因是什么

android - 如何更改不同的 URL 或在选项卡式 Activity 中查看?

android - 对齐选定的微调项

Android:如何将 Spinner 选择与 AutoCompleteTextView 连接

android - 当我们点击android中的按钮时如何显示Spinner-List?

android - 在 android studio 中找不到 "Theme.Material"

android - 在选定的微调项上显示编辑文本

android - 微调器下方的下划线未与 EditText 的下划线对齐

android - 如何设置线性布局的边框颜色