Android Appcompat v21 - 使用旧的下拉菜单样式

11

我正在一个项目中使用appcompat v21,但我不喜欢它默认带有的新下拉菜单。这个新的下拉菜单只包含一个小的向下箭头来表示其存在。我更喜欢在Android 4.x版本中使用的旧式下拉菜单,该下拉菜单具有类似EditText的特点,可以在小部件内容下方进行标记,并在右下角带有一个箭头。

如何在仍然使用appcompat v21的情况下实现此下拉菜单样式?

不需要解释,以下为示例图:

不希望出现的下拉菜单样式:

不希望出现的下拉菜单样式

期望的下拉菜单样式:

期望的下拉菜单样式

2个回答

30

你可以简单地将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样式,但有两个缺点:

  1. 此解决方案仅适用于API级别14及以上(问题不大)
  2. DropDown弹出窗口的外观由“框架”管理 - 这意味着在Lollipop之前的设备上,Popup-Window将出现在Spinner下方。从Lollipop开始,它将出现在Spinner上方(据我所知,无法更改此设置)。关于此,请参见以下比较(左侧为Lollipop之前的版本)

spinner comparison

如果您希望自定义DropDown的行,则可以通过调用Spinner的适配器上的setDropDownViewResource(int)并引用自己的布局来实现。


@reVerse:但是当我使用“/Widget.Material.Light.Spinner”时,它仍然在棒棒糖及以上版本中显示暗色主题。 - Ashwin

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接