如何在Android中的Spinner视图中添加左侧drawable

时间:2014-05-12 12:38:44

标签: android android-layout android-spinner

您好我正在尝试在Spinner中添加左侧绘图,但我没有找到任何合适的内容,因为您使用EditTextandroid:drawableLeft="@drawable/password_drawable"中执行此操作。有没有正确的方法在Android中的Spinner中实现相同的效果。

在我的情况下,我应该只留下这个状态,我在屏幕截图中给出了这个状态,当用户点击Spinner时,我不想在{{1}的开放下拉列表中留下可绘制的内容}

我尝试这样的地方没有这样的属性

Spinner

我想要下面的截图

enter image description here

目前看起来如下

enter image description here

当我设置<Spinner android:id="@+id/selectSpinner" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="@dimen/sign_up_views_vertical_top_margin" android:background="@drawable/edittext_border" /> 的背景时,它看起来像

Spinner

enter image description here

提前致谢

5 个答案:

答案 0 :(得分:14)

创建一个xml drawable @ drawable / gradient_spinner  `

<?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="@color/myTextPrimaryColor" android:startColor="@color/myTextPrimaryColor" android:type="linear" />

            <stroke android:width="1dp" android:color="@color/bg_eo" />

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

            <padding android:bottom="3dp" android:left="3dp" android:right="3dp" android:top="3dp" />
        </shape></item>
        <item ><bitmap android:gravity="right|center" android:src="@drawable/expnd" />
        </item>
    </layer-list></item>

</selector> `

设置微调器背景android:background =“@ drawable / gradient_spinner”

答案 1 :(得分:5)

创建一个9补丁图像并将其设置为Spinner的背景,然后添加左边距,应该可以做到。

答案 2 :(得分:3)

试试这个,

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
           if(view!=null) {
               ((TextView) view).setPadding(0, 0, 0, 0);//remove extra padding
               ((TextView)view) .setCompoundDrawablesWithIntrinsicBounds(AppCompatResources.getDrawable(context, R.drawable.your_image), null, null, null);
               ((TextView) view).setCompoundDrawablePadding(20);// to set drawablePadding
           }
        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {

        }
    });

答案 3 :(得分:3)

layout looks like this

dummy.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <layer-list android:opacity="transparent">
            <item android:gravity="left" android:width="100dp" 
            android:end="300dp">
                <shape>
                    <solid android:color="#269cf7">

                    </solid>
                </shape>
            </item>
            <item android:gravity="right" android:width="300dp" android:start="100dp">
                <shape>
                    <solid android:color="@color/transparent">

                    </solid>
                </shape>
            </item>
            <item android:width="100dp" android:end="300dp">
                <bitmap android:src="@drawable/arrow_bottom" android:gravity="center"/>
            </item>
        </layer-list>
    </item>
</selector>
布局文件中的

添加此代码

<android.support.v7.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:cardUseCompatPadding="true"
        app:cardElevation="5dp">
     <Spinner
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:background="@drawable/dummy">

     </Spinner>
    </android.support.v7.widget.CardView>

答案 4 :(得分:1)

作为Mark Said,您应该将以下图像作为微调器的背景并采取所需的左侧填充,以便文本将在箭头图像之后。

enter image description here

以下是一些让您了解更多的代码;)

<Spinner
    android:id="@+id/selectSpinner"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="@dimen/sign_up_views_vertical_top_margin"
    android:background="@drawable/the_attached_drawable"
    android:paddingLeft="@dimen/required_padding_for_each_screen_size"
    android:entries="@array/select_type" />