【问题标题】:How to create a Widget.Holo.Spinner-style widget in v7如何在 v7 中创建 Widget.Holo.Spinner 样式的小部件
【发布时间】:2014-11-14 07:00:40
【问题描述】:

我有一个 Button,我想将其设置为 Holo 风格的微调器,即在右下角用三角形下划线 - 例如,内置的联系人应用程序就是这样做的。

最简单的方法是创建按钮并将其样式设置为style="@android:style/Widget.Holo.Spinner" - 这给了我想要的视觉效果。

但是,我的应用旨在支持 Android 2.x,因此我无法使用原生 Holo 样式。 AppCompat 有几种与微调器相关的样式,例如 @style/Widget.AppCompat.Spinner 和其他样式,但它们看起来并不相同 - 它们只是在小部件右边缘的中心创建一个小三角形,并且没有下划线。

我可以通过创建自己的 9-patch 背景来伪造它,但我无法想象 v7 的 AppCompat 中缺少这种 Holo 微调器样式。有没有我可以使用的样式,或者任何其他方式来创建我想要的视觉结果,而无需创建自己的可绘制资源?

【问题讨论】:

    标签: android android-layout android-widget


    【解决方案1】:

    我不建议您将按钮设置为微调器之类的样式。出于某种原因,Android 为button 创建了一种特定的样式。这个简单背后的原因;如果您将按钮设置为类似于微调器的样式,您将会使应用程序的用户感到困惑,他们会认为该按钮是微调器。这就是 Android 设计团队不建议这样做的原因。

    不过,如果你仍然希望按钮显示为sninner,你可以随时复制spinner的设计,将其保存为图像并通过此xml将其设置为yuor按钮的背景:

    android:background="@drawable/spinner"
    

    spinner drawable 需要作为图片保存在 drawables 文件夹中。

    【讨论】:

    • 就像我说的,内置的联系人应用程序可以做到这一点。我查看了他们的用户界面,它确实是一个看起来像微调器的按钮。我打算在您单击它时弹出一个弹出窗口(再次,就像联系人应用程序一样),所以这种行为并不意外。
    • 那么您可以从该图像创建一个可绘制对象,例如 i.stack.imgur.com/7ZGFW.png 并从那里创建图像。或者你可以使用这个网站:android-holo-colors.com我个人觉得很棒
    • @EboMike 如果这对您有帮助,请您接受并投票赞成答案吗?否则我会非常渴望帮助你
    • 对不起,离开了——我的问题是专门关于在不使用可绘制对象的情况下设置小部件的样式(尽管我不得不说你的 android-holo-colors 链接很棒,仅此一项就值得一票)。
    • hmmmm,不使用drawables很难创建它。虽然我听说过 9 个补丁可以帮助你。不过没用过
    【解决方案2】:

    用户“ozi”把我带到了那里,不幸的是他的回答被删除了,因为它只是一个链接。

    诀窍是使用自定义属性并用特定于 v11 的部分覆盖它。如果您使用主题,以下是基本设置:

    在值/attr.xml 中:

    <declare-styleable name="MyApp">
        <attr name="holoSpinnerStyle" format="reference" />
    </declare-styleable>
    

    您可以这样创建 Spinner-Button:

    <Button
        style="?attr/holoSpinnerStyle"
         />
    

    这是关键:根据您是否拥有 v11,您在主题中有不同的值:

    在 values/themes.xml 中:

    <style name="MyTheme">
        <item name="holoSpinnerStyle">@style/Widget.AppCompat.Spinner</item>
    </style>
    

    在 values-v11/themes.xml 中:

    <style name="MyTheme">
        <item name="holoSpinnerStyle">@android:style/Widget.Holo.Light.Spinner</item>
    </style>
    

    如果您不使用主题,您的设置几乎相同 - 您只需使用 styles.xml,为您的按钮创建特定样式,然后使用它。

    在 v11 之前的版本中,这将创建一个旧式微调器,但这实际上很好 - v11 微调器在 v11 之前的环境中看起来不合适。

    【讨论】:

      猜你喜欢
      • 2023-02-15
      • 1970-01-01
      • 1970-01-01
      • 2011-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-21
      • 2012-06-27
      相关资源
      最近更新 更多