Я использую тему appcompat для своего приложения. Нужно знать, как я могу показать подчеркивание для поворота. Он просто показывает якорь. Я попытался настроить подчеркивание, используя андроид: фон, но он заставляет якорь исчезать.
Android-скручиватель с подчеркиванием appcompat
Ответ 1
Обновите свою библиотеку поддержки и используйте XML
Добавьте этот стиль в свой Spinner
style="@style/Base.Widget.AppCompat.Spinner.Underlined"
Ответ 2
Это хакерский (и не идеальный) способ изменить цвет и цвет подчеркивания в теме appcompat. Главное, что я настроил Android поддержку изображений библиотеки и XML файлы, чтобы изменить цвет.
1) перейдите в пакет поддержки библиотеки и скопируйте 2 изображения (или загрузите мои настройки в нижней части этой публикации)
/your-app/build/intermediates/exploded-aar/com.android.support/appcompat-v7/23.1.0/res/drawable-hdpi/abc_spinner_mtrl_am_alpha.9.png
и
/your-app/build/intermediates/exploded-aar/com.android.support/appcompat-v7/23.1.0/res/drawable-hdpi/abc_textfield_default_mtrl_alpha.9.png
2) Сделайте копию этих изображений
3) Измените цвет abc_spinner_mtrl_am_alpha.9.png(предупреждение: оставьте черные границы как есть, это для 9 патчей)
4) Измените цвет второй нижней строки abc_textfield_default_mtrl_alpha.9.png(вы можете видеть на прилагаемом маленьком изображении ниже)
5) Сохраните и переместите файлы в чертежи проекта
6) Создайте draw_line_color.xml drawable:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:top="-6dp" android:left="-6dp" android:right="-6dp">
<shape>
<stroke android:color="@color/brown" android:width="6dp"/>
</shape>
</item>
7) Создайте spinner_bottom_line.xml
<?xml version="1.0" encoding="utf-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:insetLeft="@dimen/abc_control_inset_material"
android:insetTop="@dimen/abc_control_inset_material"
android:insetBottom="@dimen/abc_control_inset_material"
android:insetRight="@dimen/abc_control_inset_material">
<selector>
<item android:state_checked="false" android:state_pressed="false">
<layer-list>
<item android:drawable="@drawable/my_custom_abc_textfield_default_mtrl_alpha" />
<item android:drawable="@drawable/my_custom_abc_spinner_mtrl_am_alpha" />
</layer-list>
</item>
<item>
<layer-list>
<item android:drawable="@drawable/my_custom_abc_textfield_default_mtrl_alpha" />
<item android:drawable="@drawable/my_custom_abc_spinner_mtrl_am_alpha" />
</layer-list>
</item>
</selector>
</inset>
P.S. Я не мог достичь такого же визуального стиля, как и по умолчанию (визуальные изменения, показанные ниже). Если вы начнете использовать эту настраиваемую тему spinner, вы должны использовать ее во всех проектах.
Итак, добавьте значения /styles.xml
<style name="My.Spinner.Style" parent="Base.Widget.AppCompat.Spinner.Underlined">
<item name="android:background">@drawable/spinner_bottom_line</item>
</style>
И используйте его в приложении следующим образом:
<Spinner
android:id="@+id/account_spinner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/My.Spinner.Style"
/>
Важно: Вы должны изменить размер счетчика и поместить его в различные папки. Вы можете найти такой же путь, как я показал выше. Существует несколько популярных размеров:
drawables-mdpi 20x26
drawables-hdpi 29x38
drawables-xhdpi 38x50
drawables-xxhdpi 74x98
Вы можете взять мои настроенные изображения здесь:
my_custom_abc_spinner_mtrl_am_alpha:
my_custom_abc_textfield_default_mtrl_alpha:
Пример Spinner (xxhdpi), строка - mdpi (потому что нам не нужны разные строки в разных папках с возможностью рисования, поэтому мы можем иметь только 1).
Визуальная разница (из окна предварительного просмотра xml studio) показана здесь:
Первая строка - это мой пользовательский указатель подчеркивания, второй по умолчанию - Base.Widget.AppCompat.Spinner.Underlined
Ответ 3
в styles.xml
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:spinnerStyle">@style/holoSpinner</item>
</style>
<style name="holoSpinner" parent="Widget.AppCompat.Spinner.Underlined">
<item name="android:textSize">16sp</item>
<item name="android:textColor">@color/colorPrimary</item>
</style>
========================
в макете
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp">
<Spinner
android:id="@+id/spinCountry"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/edit_text_bottom_border"
android:paddingBottom="10dp" />
</android.support.design.widget.TextInputLayout>
===============================================
файл edit_text_bottom_border.xml в Drawable
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:bottom="1dp"
android:left="-3dp"
android:right="-3dp"
android:top="-3dp">
<shape android:shape="rectangle">
<stroke
android:width="1dp"
android:color="#535353" />
<!--android:color="#535353" />-->
</shape>
</item>
</layer-list>