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

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

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

Желаемый стиль блесны:

фотография нежелательного прядильщика:

photo of undesired spinner

фотография нужного прядильщика:

photo of desired spinner

Ответ 1

Вы можете просто установить стиль Spinner на 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" />

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

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

spinner comparison

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

Ответ 2

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