Подтвердить что ты не робот

Android-скручиватель с подчеркиванием appcompat

Я использую тему appcompat для своего приложения. Нужно знать, как я могу показать подчеркивание для поворота. Он просто показывает якорь. Я попытался настроить подчеркивание, используя андроид: фон, но он заставляет якорь исчезать.

4b9b3361

Ответ 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_spinner_mtrl_am_alpha

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