【问题标题】:how to round corners of a Button but keep its default appearance如何圆角按钮但保持其默认外观
【发布时间】:2014-02-16 16:19:14
【问题描述】:

我有一个看起来符合Theme.Holo.Light 的按钮。我曾经通过将其背景设置为以下来圆角:

   <?xml version="1.0" encoding="utf-8"?>
   <shape xmlns:android="http://schemas.android.com/apk/res/android"
   android:padding="10dp"
   android:shape="rectangle" >

   <corners
    android:bottomLeftRadius="15dp"
    android:bottomRightRadius="15dp"
    android:topLeftRadius="15dp"
    android:topRightRadius="15dp" />
   </shape>

现在Button 变得透明了。我尝试创建一个选择器,添加一个solid 属性并使用其中的两个drawables 用于正常和按下状态,但我无法复制Holo.Light 主题的默认Button 行为。因此,我正在寻找 2 种可能的解决方案:要么以某种方式绕过 Button 的角而不影响其默认样式,要么找到定义上述样式的 XML,以便我可以复制它。我一直在查看 SDK 内部并使用此参考:https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/res/res/values/themes.xml 但没有成功。

任何想法如何制作圆角Button 但将所有其他外观属性保持为默认值?

【问题讨论】:

  • 也许使用一些 9 个补丁会有所帮助。
  • @ArtooDetoo 为什么?我不需要任何自定义背景,我只需要将按钮的角变圆,并将所有其他内容保持为默认值
  • 与您尝试使用 xml 可绘制对象的原因相同:获得圆角。
  • @ArtooDetoo 我可以圆角,但默认背景会变得很多。使用 9 补丁将导致完全相同
  • 没有。 9 补丁不必是透明的。原始 style (不是主题,因为您的问题中错误地链接了)使用 9 个补丁。如果您阅读THIS 文档并搜索 btn_default(从第 1552 行开始),您将学习如何制作一种覆盖标准可绘制对象(9 个补丁)的样式。然后只需将原始艺术作品复制到您应用的可绘制文件夹并圆角即可。

标签: android android-layout android-button


【解决方案1】:

原始样式使用 9 个补丁。
如果您阅读THIS 文档并搜索 btn_default(从第 1995 行开始),您将学习如何制作覆盖标准可绘制对象的样式(9 个补丁)。
然后只需将原始艺术作品复制到应用程序的可绘制文件夹并圆角即可。

它们将在 StateList drawable 中被引用,称为 btn_default_holo_light.xml

如果您使用的是 Windows,则在此处:C:\Your_Path_To_Eclipse\sdk\platforms\android-XY\data\res\drawable,其中 XY 为 11 到 19(取决于您的 minSdkVersion )

还有这里的 9 个补丁:C:\Your_Path_To_Eclipse\sdk\platforms\android-XY\data\res\drawable-RES,其中 XY 为 11 到 19(取决于您的 minSdkVersion)和RES为具体dpi分辨率(mdpi,作为参考)

【讨论】:

    猜你喜欢
    • 2014-01-29
    • 2017-03-10
    • 1970-01-01
    • 2014-07-25
    • 1970-01-01
    • 2012-11-24
    • 1970-01-01
    • 2019-11-13
    • 1970-01-01
    相关资源
    最近更新 更多