如何用图像替换Android中微调器的图标箭头?

时间:2016-08-04 09:23:21

标签: android

我想使用自定义图片更改Android中的默认微调器图标箭头。

我制作了自定义微调器(基于这个答案:How to customize a Spinner in Android,只是更改自定义值)并且效果很好但是我无法在样式上或以编程方式更改微调器的箭头。

我看到了这个问题:How to change image of a spinner但由于我没有Spinner标记,因此我不允许添加属性android:spinnerSelector

如何用图像替换默认箭头图标?

提前致谢!

3 个答案:

答案 0 :(得分:3)

简短的例子:

Spinner spinner = (Spinner) findViewById(R.id.spinner);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
        this,
        R.layout.custom_spinner,
        ITEMS
);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);

然后为spinner:

创建一个自定义xml(名为:custom_spinner.xml)
<?xml version="1.0" encoding="utf-8"?>
<TextView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    style="?android:attr/spinnerItemStyle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:singleLine="true"
    android:textSize="yourTextsize"
    android:drawablePadding="paddingValueYouWant"
    android:drawableRight="@drawable/ic_arrow_down" <!--your custom icon-->
    />

要获得更多自定义微调器,请遵循以下artircle:How to set font custom font to Spinner text programmatically?

答案 1 :(得分:1)

你可以直接改变风格,

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

只需使用您想要的可绘制图标,然后在微调器中设置主题

<Spinner
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/CustomSpinnerTheme"/>

答案 2 :(得分:0)

    Do something like this. It works great!

<RelativeLayout
                android:layout_width="match_parent" 
                android:layout_height="wrap_content"
                android:layout_marginRight="42dp"
                android:layout_marginLeft="42dp">

            <Spinner
                android:id="@+id/country_spinner"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:prompt="@string/country_prompt"
                android:background="@null">

            </Spinner>

                <ImageView
                    android:layout_width="14dp"
                    android:layout_height="14dp"
                    android:src="@drawable/spinner_arrow"
                    android:layout_alignParentRight="true"
                    android:layout_marginRight="15dp"
                    android:layout_centerVertical="true"/>

            </RelativeLayout>