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