【问题标题】:adding style to a android borderless button (android 4.0+)为 android 无边框按钮添加样式(android 4.0+)
【发布时间】:2012-12-23 12:15:31
【问题描述】:

我想为无边框按钮添加边框。但是,如果我使用父无边框按钮创建自己的样式并覆盖背景标记,我会丢失状态更改动画等,因为这也是由背景定义的。我自己也无法实现它们,因为原生 android 可绘制对象不能作为公共对象使用,因此无法访问。我不想复制drawables。 是否只能以编程方式覆盖ondraw,或者我是否缺少基于 xml 的解决方案? (顺便说一句,这是一个周期表,所以这不应该涉及每个按钮都有一个 xml 文件,因为它们大约有 100 个) 谢谢 斯蒂芬

【问题讨论】:

  • 如果它是元素周期表,那么也许你应该使用网格视图。这支持项目之间的线条。
  • 原始图像可通过 SDK 获得。您需要一个具有正确结构的 xml 文件,Android 会在其中获取正确状态的图片。

标签: android android-layout button styles android-xml


【解决方案1】:

其中大部分来自this article

执行以下操作需要 4 个步骤:

  1. 创建一个包含状态的 XML 文件。
  2. 为每个州创建一个 XML 文件(或背景)
  3. 创建按钮的样式
  4. 将按钮添加到您的布局中,看看它是什么样子的。

最困难的事情是第一步,所以我将在这里展示它。对于其他人,您可以访问该站点或做自己的事情。本质上,它看起来像这样。基本上需要捕获所有 4 个状态。这应该保存在 drawable 文件夹中,并且它的名称是您的应用程序将用作 drawable 名称的名称。

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:state_enabled="false"
        android:drawable="@drawable/loc_for_button_disabled" />
    <item
        android:state_pressed="true"
        android:state_enabled="true"
        android:drawable="@drawable/loc_for_button_pressed" />
    <item
        android:state_focused="true"
        android:state_enabled="true"
        android:drawable="@drawable/loc_for_button_focused" />
    <item
        android:state_enabled="true"
        android:drawable="@drawable/loc_for_button_enabled" />
</selector>

【讨论】:

    【解决方案2】:

    简单的方法是将您的按钮放置在单独的布局中,例如一个LinearLayout 并给这个布局一个背景颜色和一个例如填充1dp。这将在按钮周围呈现“边框”。请注意,这在布局方面非常昂贵,因此当您有很多按钮时不要使用此方法。

    正确的解决方案是为所有状态创建一个可绘制对象,并使用您的可绘制对象构建一个可绘制状态列表,并将该可绘制状态列表指定为按钮的背景。其实工作量不大,看看http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList

    【讨论】:

      猜你喜欢
      • 2014-05-01
      • 1970-01-01
      • 2014-07-01
      • 1970-01-01
      • 2014-04-08
      • 2011-12-03
      • 1970-01-01
      • 2023-03-20
      • 2012-04-07
      相关资源
      最近更新 更多