Android Appcompat v21-используйте старый стиль спиннера


Я использую appcompat v21 в проекте, но мне не нравится новый спиннер, с которым он поставляется по умолчанию. Этот новый спиннер поставляется только с небольшой стрелкой вниз, которая указывает на его присутствие. Я бы предпочел старый спиннер, используемый в 4.x версии android, которые поставляются с функцией EditText, подчеркивающей содержимое виджета, и Стрелкой в правом нижнем углу.

Как я могу достичь этого стиля spinner, все еще используя appcompat v21?

Прядильщик udesired тип:

Фото нежелательного спиннера:

фото нежелательного спиннера

Фото нужного спиннера:

фото нужного спиннера

2 11

2 ответа:

Вы можете просто установить стиль спиннера в Widget.Holo.Light.Spinner

Пример

<Spinner
    android:id="@+id/spinner"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    style="@android:style/Widget.Holo.Light.Spinner" />

Это вернет вам старый стиль спиннера, хотя есть два недостатка:

  1. это решение работает только с API-уровнем 14 и выше (не такая уж большая проблема)
  2. внешний вид выпадающего всплывающего окна управляется" фреймворком " - это означает, что на устройствах pre Lollipop всплывающее окно появится ниже Spinner. Начиная с леденца, он будет выше спиннера (afaik нет никакого способа изменить это). Относительно этого смотрите следующее сравнение (слева пре леденец)

сравнение блесны

Если вы хотите настроить строки выпадающего списка, вы можете сделать это, вызвав setDropDownViewResource(int) на адаптере спиннера со ссылкой на ваш собственный макет.

    <Spinner
    android:id="@+id/spinner_nav"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:spinnerMode="dropdown"
    android:overlapAnchor="false"
    style="@style/Platform.Widget.AppCompat.Spinner"/>