Spinner со стрелкой влево

Я разрабатываю приложение для языка RTL и хочу изменить положение стрелки слева от Spinner! Есть ли способ сделать это без создания настраиваемого счетчика?

Ответ 1

Вы должны написать собственный счетчик. Пример кода ниже. Вы можете редактировать, как пожелаете.

<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>

Ответ 2

Легкий и простой способ установки стрелки в левой части: вы должны создать .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, как показано ниже:

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

Ответ 3

Это сработало в моем случае. В моем приложении есть английский и арабский языки

<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

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>

Нажмите здесь для визуализированного макета