我为Gimp创建了一个Dialog背景,它是一个透明且透明背景的PNG。如果我在ImageView上显示它很好,背景是透明的。
<ImageView
android:src="@drawable/test"
但是,如果我将其显示为对话框的LinearLayout的背景,则会显示白色背景而不是图像的透明度(Alpha通道)。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:background="@drawable/test"
final Dialog dialog = new Dialog(context);
dialog.setContentView(R.layout.xmldialog);
这是PNG:
当我用作对话的LinearLayout的背景时,应该怎样做才能获得alpha通道而不是我创建的图像下面的白色背景?我确定这是对话框的问题。必须将某些东西设置为真。
谢谢。
答案 0 :(得分:1)
尝试将其设置为对话框setBackgroundDrawable()
的背景。
dialog.getWindow().setBackgroundDrawable(ContextCompat.getDrawable(this,R.drawable.ic_launcher));
如果你要将背景设置为root布局。然后将背景设置为透明。
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
并使你的根布局保持背景。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:background="@drawable/test"
确保使用的png在边框上没有任何彩色填充。
您还可以使用指定的主题设置对话框背景。下面是一个例子。
<style name="DialogTheme" parent="android:Theme.Holo.Dialog.NoActionBar">
<item name="android:windowBackground">@color/transparent</item>
<item name="android:colorBackgroundCacheHint">@null</item>
在Dialog的构造函数中使用此主题。
Dialog dialog = new Dialog(this, R.style.DialogTheme);
根据需要更改主题,并注意所使用的属性。
答案 1 :(得分:1)
两个十六进制字符可以附加到任何十六进制颜色代码。 8位十六进制颜色代码中的前两个字符表示其在Android中的不透明度。
两个十六进制字符的范围是00到FF。例如,
- &GT;普通的不透明黑色十六进制 - &#34;#000000&#34;
- &GT;完全透明 - &#34;#00000000&#34;
- &GT;完全不透明 - &#34;#FF000000&#34;
- &GT; 50%透明 - &#34;#7F000000&#34;
这样您可以将任何颜色更改为任何透明度。
从百分比中查找十六进制前缀:
将百分比数除以100并乘以255得到小数值。将小数转换为十六进制。
例如,对于50%,50/100 * 255 = 127.使用该链接我们得到十六进制值7F。
希望这可以帮助您理解为任何视图设置透明背景。