【问题标题】:Set button's background from android attributes based on API version根据 API 版本从 android 属性中设置按钮的背景
【发布时间】:2016-10-18 12:51:47
【问题描述】:

在我的应用中,我希望所有按钮都具有相同的背景。

对于 API 21 和更新的?android:attr/selectableItemBackgroundBorderless

对于较旧的 API ?android:attr/selectableItemBackground

如何在 XML 中设置按钮的背景,使其引用基于 android 版本的正确可绘制对象?

【问题讨论】:

    标签: android


    【解决方案1】:

    在res/values 文件夹中的styles.xml 中为应用程序创建一个主题:

    <style name="AppTheme" parent="AppTheme">
        <item name="android:buttonStyle">?android:attr/selectableItemBackground</item>
    </style>
    

    在styles.xml 文件夹中的res/values-v21 中为应用程序创建一个主题:

    <style name="AppTheme" parent="AppTheme">
        <item name="android:buttonStyle">?android:attr/selectableItemBackgroundBorderless</item>
    </style>
    

    将主题应用到AndroidManifest.xml中的应用程序:

    (...)
    <application
        android:theme="@style/AppTheme">
    (...)
    

    【讨论】:

    • 谢谢。这个解决方案有效,但我想知道是否可以在不使用样式的情况下做同样的事情。对我来说更好的解决方案是,如果我能以某种方式将 android drawables 包装到我自己的 drawables 中,将它们放在 drawable、drawable-v21 文件夹中,然后直接在视图上设置背景?
    • 在res/drawable 和res/drawable-v21 中声明具有相同名称的drawable,并将Button 的android:background 指向该drawable?我不确定这是否是您的意思。
    • 是的,但我希望我的可绘制对象使用?android:attr/selectableItemBackground。我怎么做?我需要什么类型的drawable?有可能吗?
    【解决方案2】:

    创建两种样式。参考:Creating styles-v21.xml

    第一步之后:设置ButtonStyle 参考:https://stackoverflow.com/a/14033420/7001152

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-14
      • 1970-01-01
      • 2021-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多