我写了一个绘制圆圈的自定义视图。然后我把它放在相对布局上。我也把标准按钮放在那里,以便它们重叠。我看到按钮是透明的。如何使它不透明?
答案 0 :(得分:31)
将背景设置为@android:drawable/btn_default
以摆脱全息主题的透明度
答案 1 :(得分:6)
标准的Holo主题按钮部分透明。您可以创建要在按钮中使用的新按钮9.png图像,也可以使用drawable创建新按钮。
这是关于如何做后者的链接:
答案 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放在按钮后面并更改其margin
,background
和alpha
以适应按钮。例如,在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。