显示白色背景的对话,当使用与透明度的png作为背景时

时间:2018-03-01 12:06:20

标签: android android-layout png transparency android-dialog

我为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:

enter image description here

当我用作对话的LinearLayout的背景时,应该怎样做才能获得alpha通道而不是我创建的图像下面的白色背景?我确定这是对话框的问题。必须将某些东西设置为真。

谢谢。

2 个答案:

答案 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。

希望这可以帮助您理解为任何视图设置透明背景。