【问题标题】:How to make button non transparent?如何使按钮不透明?
【发布时间】:2012-05-24 20:55:12
【问题描述】:

我写了一个自定义视图来绘制一个圆圈。然后我把它放在相对布局上。我还把标准按钮放在那里,以便它们重叠。我看到那个按钮是透明的。如何让它不透明?

【问题讨论】:

    标签: android styles transparency z-order


    【解决方案1】:

    设置背景为@android:drawable/btn_default,去掉holo主题的透明感

    【讨论】:

    • 这也将图形更改为设备默认值(即不是全息)。
    • 完美答案。谢谢。
    • 这是完美的答案!您知道如何将其应用于其他控件吗? (尤其是 EditText)
    • 好吧,我自己找到了我的问题的答案,它是:@android:drawable/edit_text
    【解决方案2】:

    标准的 Holo 主题按钮是部分透明的。您可以创建一个新的按钮 9.png 图像以在按钮中使用,也可以使用 drawable 创建一个新按钮。

    这是一个关于如何做后者的链接:

    http://droidapp.co.uk/?p=309

    【讨论】:

    • 最简单的方法是什么?我不能将按钮设置为不透明吗?
    • 第二个选项非常简单。您可以将按钮的背景更改为纯色(即 #999999),但这看起来不太好,并且不会使按钮处于按下状态,从而导致糟糕的用户体验。
    【解决方案3】:

    您可以将按钮放在单独的框架布局中,这样您的视图就不会影响按钮,这就是我的想法

    【讨论】:

      【解决方案4】:

      将下面的代码保存为可绘制文件夹中的xml,并将此xml作为按钮背景

      <?xml version="1.0" encoding="UTF-8"?>
      <shape xmlns:android="http://schemas.android.com/apk/res/android">
          <stroke android:width="0dp" android:color="#ffffff" />
          <solid android:color="#000000"/>
          <corners android:radius="1px"/>
          <padding android:left="5dp" android:top="3dp" android:right="5dp" android:bottom="3dp" /> 
      </shape>
      

      例如:

      android:background="@drawable/<< your file name>>"
      

      【讨论】:

        【解决方案5】:

        我遇到了同样的问题,但使用的是 ToggleButton。一个丑陋但快速的解决方案是在按钮后面放置一个 ImageView 并更改其 margins、backgroundalpha 以适应按钮。例如,在 RelativeLayout 内部:

        <ImageView
            android:layout_alignLeft="@+id/toggleButton"
            android:layout_alignBottom="@+id/toggleButton"
            android:layout_alignRight="@+id/toggleButton"
            android:layout_alignTop="@+id/toggleButton"
            style="@style/HackBackgroundToggleButton" />
        
        <ToggleButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/toggleButton"
            ... />
        

        并且,为了减少可见的 hack,提取的样式:

        <style name="HackBackgroundToggleButton">
            <item name="android:layout_width">84dp</item>
            <item name="android:layout_height">42dp</item>
            <item name="android:background">#FFFFFF</item>
            <item name="android:layout_marginTop">4dp</item>
            <item name="android:layout_marginLeft">4dp</item>
            <item name="android:layout_marginRight">4dp</item>
            <item name="android:layout_marginBottom">4dp</item>
            <item name="android:alpha">0.75</item>
        </style>
        

        【讨论】:

          【解决方案6】:

          全息透明度实际上是内置在 PNG 文件中的。所以改变它的唯一真正方法是编辑PNG并使它们不透明。这实际上一点也不容易。您需要将图像的 Alpha 通道乘以 255/102。这并不容易!

          但因为我是个天才,所以我找到了办法。基本上我将所有相关的 PNG 和 XML 复制到它们自己的目录结构中(按钮只有 -mdpi-hdpi-xhdpi 版本)。然后我运行了这个:

          find . -name *.png 中的文件;做 mogrify -evaluate Multiply 2.5 -channel Alpha $FILE ;完成

          任务完成!实际上,由于某种原因,它对禁用的按钮不太有效——我认为是因为中心是超透明的,但我不太在乎这些。如果您希望它们完全不透明,则必须为这些图像使用高于 2.5 的值。

          Anway 结果是here

          【讨论】:

          • 这很好,但是当您说“然后我运行了这个...”时,您从哪里运行该代码?
          猜你喜欢
          • 2014-01-05
          • 1970-01-01
          • 2015-02-22
          • 2021-09-18
          • 2019-03-18
          • 2011-05-19
          • 2011-05-24
          • 1970-01-01
          • 2016-11-24
          相关资源
          最近更新 更多