【问题标题】:My radio button background is transparent, how do I make it opaque?我的单选按钮背景是透明的,如何使其不透明?
【发布时间】:2011-05-24 17:09:04
【问题描述】:

更新 1:

我按照下面阿基米德提供的指示进行操作。问题是我的 API 9“drawable”文件夹已经有一个名为“btn_radio.xml”的 XML 文档,并且里面的代码与您上面介绍的完全相同。现在,当我回到 Eclipse 并告诉它时:

`<RadioButton android:background="@drawable/btn_radio" ... />`

我收到一条错误消息作为回报错误:找不到与给定名称匹配的资源(在“背景”,值为“@drawable/btn_radio_on”)。

所以我改为转到 API 8 文件夹并查找 drawable_hdpi 和 mdpi 文件夹,搜索 btn_radio_off 和 btn_radio_on 并将这两个图像复制到相应的 API 9 文件夹中。这解决了 Eclipse 中单选按钮背景未显示的问题。但是,当我运行我的代码时,虚拟设备仍然显示旧的损坏(透明)图像。*

原帖:

您好,我正在关注本网站上的 Gingerbread 2.3(我正在运行 Win7/Eclipse)教程,我正在这里查看这张图片:http://www.vogella.de/articles/Android/images/first50.gif

每次我在 Main.xml 中的图形布局中添加一个新的单选按钮时,单选按钮的银色部分都是透明的。所以不管主窗口的背景颜色如何,我只会看到一个单选按钮的轮廓,并且该单选按钮将被填充整个背景的颜色。

如果我创建一个分组项并将两个单选按钮放在一个组中,我可以在两者之间切换,并且显示哪个被切换的绿色指示器可用,但按钮本身是透明的。

如何使我的单选按钮看起来像上图中的那个?似乎无论我启动一个“新”项目多少次,问题仍然存在。唯一影响它的是切换另一个“主题”,但一旦我运行应用程序,这并不是真正的解决方案。

感谢您的帮助。

【问题讨论】:

  • 旁注:您也应该将您的问题标记为Android

标签: android button transparency radio


【解决方案1】:

这似乎是RadioButton drawable 的组成 png 的新 Gingerbread(2.3,API 级别 9)图形样式。

最简单的解决方法就是不使用 Gingerbread...转到您的项目属性,选择“Android”选项卡,然后将“项目构建目标”更改为 API 级别 8 或更低。

【讨论】:

  • 将其设置为 2.2 或 API 8 可以解决问题,但不能解决问题。
  • 我进一步更新了我原来的问题,以澄清它是姜饼,并显示我试图到达的 A 点和 B 点。感谢您的帮助,您还有其他建议吗?
  • Arhimed 在上面击败了我。
【解决方案2】:

这是我认为应该适合您的解决方法:

1)。在 2.2 来源中查找“btn_radio_off.png”、“btn_radio_off_pressed.png”、“btn_radio_off_selected.png”、“btn_radio_on.png”、“btn_radio_on_pressed.png”、“btn_radio_on_selected.png”图像。您可以在 SDK 子文件夹中找到它们。请注意,有几组图像(hdpi、mdpi 等)。在“drawable”目录中重新创建与这些文件相关的文件结构。

2)。在您的“drawable”目录中创建具有以下内容的“btn_radio.xml”文件:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true" android:state_window_focused="false"
          android:drawable="@drawable/btn_radio_on" />
    <item android:state_checked="false" android:state_window_focused="false"
          android:drawable="@drawable/btn_radio_off" />

    <item android:state_checked="true" android:state_pressed="true"
          android:drawable="@drawable/btn_radio_on_pressed" />
    <item android:state_checked="false" android:state_pressed="true"
          android:drawable="@drawable/btn_radio_off_pressed" />

    <item android:state_checked="true" android:state_focused="true"
          android:drawable="@drawable/btn_radio_on_selected" />
    <item android:state_checked="false" android:state_focused="true"
          android:drawable="@drawable/btn_radio_off_selected" />

    <item android:state_checked="false" android:drawable="@drawable/btn_radio_off" />
    <item android:state_checked="true" android:drawable="@drawable/btn_radio_on" />
</selector>

这实际上与操作系统用于单选按钮的状态列表相同。

3)。然后在您的布局 xml 中,使用上面的状态列表通过 android:background 属性声明您的自定义单选按钮:

<RadioButton android:background="@drawable/btn_radio" ... />

【讨论】:

  • 太棒了!我认为这解决了它,非常感谢您的帮助!
  • @user540647:请先测试,如果它真的解决了您的问题,然后将我的答案标记为解决方案。 :)
  • 好的,那没用。问题是我的 API 9“drawable”文件夹已经有一个名为“btn_radio.xml”的 XML 文档,并且里面的代码与您上面介绍的完全相同。现在,当我回到 Eclipse 并说: 我收到一条错误消息作为回报错误:找不到与给定名称匹配的资源(在'背景' 值为 '@drawable/btn_radio_on')。
  • @user540647:我认为它可以很容易地修复。只需将“btn_radio.xml”文件重命名为“my_btn_radio.xml”。还要从android:background 属性指向新名称。并且(以防万一)您还可以在文件系统和 'my_btn_radio.xml' 内部为集合中的每个图像文件名添加“my_”。我看不出有什么原因导致这行不通。
  • @user540647:我最后的评论对你有帮助吗?
猜你喜欢
  • 2019-03-18
  • 2015-02-22
  • 1970-01-01
  • 2011-05-19
  • 2011-09-15
  • 1970-01-01
  • 2012-05-14
  • 2014-02-13
  • 1970-01-01
相关资源
最近更新 更多