左边有箭头的微调框

时间:2015-02-25 09:10:22

标签: android android-spinner right-to-left

我正在为RTL语言开发一个应用程序,并希望将箭头的位置更改为Spinner的左侧! 无论如何都可以在不创建自定义微调器的情况下执行此操作吗?

6 个答案:

答案 0 :(得分:13)

您必须编写自定义微调器。 示例代码如下。您可以根据需要进行编辑。

<Spinner
            style="@style/spinner_style"
            android:layout_width="match_parent"
            android:layout_height="wrap content"
             />

@风格/ spinner_style:

 <style name="spinner_style">
    <item name="android:background">@drawable/background_spinner</item>
</style>

@绘制/ background_spinner

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item><layer-list>
        <item><shape>
               <solid android:color="@android:color/white" />
                <corners android:radius="4dp" />
                <padding android:left="8dp"/>
            </shape></item>
        <item><bitmap android:gravity="left"
              android:src="@drawable/ic_arrow_drop_down_grey600_36dp"/>                
        </item>
    </layer-list></item>
</selector>

答案 1 :(得分:3)

在左侧设置箭头的简单方法是,您必须在drawable文件夹中创建.xml文件,如下所示:

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

   <item>
        <shape android:shape="rectangle">
            <solid android:color="@color/colorWhite" />
        </shape>
   </item>
   <item
        android:drawable="@drawable/ic_arrow_drop_down_black_24dp"
        android:right="320dp"/>
</layer-list>

您可以根据需要调整上述代码。 并将此文件设置为微调框小部件的背景,如下所示:

<Spinner
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/layout_spinner"
        android:background="@drawable/arrow_left"
        android:elevation="5dp"/>

答案 2 :(得分:2)

dummy.xml(drawable应该是非常小的-24dp)

<?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:width="100dp" android:end="300dp">
                <bitmap android:src="@drawable/down_button_dummy_dummy" 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>

Click here for rendered layout

答案 3 :(得分:2)

这对我来说很有效。我的应用程序中有英语和阿拉伯语

<Spinner
    android:textDirection="locale"
    android:id="@+id/spnGender"
    style="@style/Base.Widget.AppCompat.Spinner.Underlined"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:entries="@array/array_gender"/>

此属性很重要。

android:textDirection="locale"

注意:我使用的默认微调器没有进行任何自定义。

答案 4 :(得分:1)

  • 在可绘制文件夹中创建.xml: @ drawable / spinner_arrow.xml

<item>

    <layer-list>

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

                <stroke android:width="1dp" android:color="#ECF0F1" />

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

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

        <item         android:width="24dp"         android:height="24dp"         android:gravity="end|center_vertical"         android:drawable="@drawable/ic_keyboard_arrow_down_black_24dp"         />

    </layer-list>

</item>
-然后将其添加到styles.xml
<style name="spinner_style">
    <item name="android:background">@drawable/spinner_arrow</item>
</style>
  • 然后将其添加到 spinner

    style =“ @ style / spinner_style”

答案 5 :(得分:0)

那呢? 首先,请确保您在AndroidManifest.xml中启用了rtl支持

<application
...
android:supportsRtl="true"
...>

然后在Spinner定义中使用它:

android:layoutDirection="rtl"
android:textDirection="rtl"