在android中创建一个透明的Dialog

时间:2015-11-07 16:27:10

标签: android xml alpha-transparency

我必须像这张图片一样制作一个透明的对话框。我已经尝试过多种方式,比如设置背景android:background="#CCFF0000"或者像.java文件那样设置背景颜色

llWhole.setBackgroundColor(Color.TRANSPARENT);。这里llWhole是我的xml的父LinearLayout

我还在xml文件中尝试了android:background="@android:color/transparent"。我也试过了View.setAlpha(0.7)

不幸的是,他们都没有帮助我创建这个布局。你能帮我解决这个问题吗?提前谢谢。

我的.xml就在这里

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/llWhole"
    android:alpha = "0.7"
    android:layout_gravity="center"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="10dp"
        android:alpha = "0.7"
        android:layout_gravity="center"
        android:orientation="vertical">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:text="Are You OK?"
            android:textColor="#000"
            android:paddingTop="10dp"
            android:paddingRight="10dp"
            android:paddingLeft="10dp"
            android:gravity="center"
            android:textSize="18sp"
            android:background="#FFF"/>

        <View
            android:layout_width="fill_parent"
            android:layout_height="40dp"
            android:alpha = "0.7"
            android:background="#00FFFFFF" >
        </View>

        <LinearLayout
            android:paddingTop="10dp"
            android:paddingRight="10dp"
            android:paddingLeft="10dp"
            android:paddingBottom="20dp"
            android:background="#00FFFFFF"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:orientation="horizontal">

            <TextView
                android:id="@+id/tvOK"
                android:layout_width="55dp"
                android:layout_height="wrap_content"
                android:text="OK"
                android:textColor="#000"
                android:gravity="center"
                android:textSize="18sp"
                android:background="#F11"/>

            <TextView
                android:id="@+id/tvNo"
                android:layout_width="55dp"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:text="NO"
                android:textColor="#000"
                android:gravity="center"
                android:textSize="18sp"
                android:background="#F11"/>

        </LinearLayout>
        </LinearLayout>


</LinearLayout>

注意:

  1. 我正在使用com.android.support:appcompat-v7:23.0.1
  2. 我的对话框是android.support.v4.app.DialogFragment
  3. 我的mainActivity扩展了android.support.v7.app.AppCompatActivity;。从这个Activity我将展示这个DialogFragment。

    MyDialogFragment dialogFragment = new MyDialogFragment(); dialogFragment.show(getSupportFragmentManager(), "my_transparent_dialog");

  4. enter image description here

3 个答案:

答案 0 :(得分:0)

请尝试myDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));

注意: 但考虑使用默认背景并与材料设计ui模式保持一致。

答案 1 :(得分:0)

在你的dialogFragment onCreate中,尝试使用setStyle(,)来设置样式 @android:彩色/透明 真

答案 2 :(得分:0)

最后,我使用这行代码解决了这个问题onCreateView回调。

getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(0));

我是从here

找到的