我写了一个画一个圆圈的自定义视图。然后我把它放在相对布局上。我还把标准按钮放在那里,以便它们重叠。我看到那个按钮是透明的。如何让它不透明?
6 回答
将背景设置@android:drawable/btn_default
为摆脱holo主题的透明度
标准的 Holo 主题按钮是部分透明的。您可以创建一个新的按钮 9.png 图像以在按钮中使用,也可以使用 drawable 创建一个新按钮。
这是有关如何执行后者的链接:
您可以将按钮放在单独的框架布局中,这样您的视图就不会影响按钮,这就是我的想法
将以下代码保存为可绘制文件夹中的 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>>"
我遇到了同样的问题,但使用了 ToggleButton。一个丑陋但快速的解决方案是在按钮后面放置一个 ImageView 并更改它margin
的 s,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"
... />
而且,为了减少可见的 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>
全息透明度实际上是内置在 PNG 文件中的。所以改变它的唯一真正方法是编辑PNG并使它们不透明。这实际上一点也不容易。您需要将图像的 Alpha 通道乘以 255/102。这并不容易!
但是因为我是个天才,所以我找到了一种方法来做到这一点。基本上我将所有相关的 PNG 和 XML 复制到它们自己的目录结构中(按钮只有-mdpi
,-hdpi
和-xhdpi
版本)。然后我运行了这个:
对于文件find . -name *.png
;做 mogrify -evaluate Multiply 2.5 -channel Alpha $FILE ;完毕
任务完成!实际上,由于某种原因,它对禁用的按钮不太有效——我认为是因为中心是超透明的,但我不太在乎这些。如果您希望它们完全不透明,则必须为这些图像使用高于 2.5 的值。
结果就在这里。