如何使按钮不透明?

时间:2012-05-17 09:30:43

标签: android styles transparency z-order

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

enter image description here

6 个答案:

答案 0 :(得分:31)

将背景设置为@android:drawable/btn_default以摆脱全息主题的透明度

答案 1 :(得分:6)

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

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

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

答案 2 :(得分:3)

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

答案 3 :(得分:1)

将以下代码保存为可绘制文件夹中的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>>"

答案 4 :(得分:1)

我遇到了同样的问题但是使用了ToggleButton。一个丑陋但快速的解决方案是将ImageView放在按钮后面并更改其marginbackgroundalpha以适应按钮。例如,在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"
    ... />

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

<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>

答案 5 :(得分:0)

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

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

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

完成工作!实际上由于某种原因它对残疾人按钮不起作用 - 我认为因为中心是超透明的,但我并不在乎这些。如果您希望这些图像完全不透明,则必须使用高于2.5的值。

结果是here