如何在android中的自定义警报对话框中透明

时间:2017-12-12 00:46:34

标签: android android-layout

我为项目创建了自定义警告对话框。单击该按钮时,将打开自定义警报对话框,但我的自定义警报对话框中会显示白色背景。我怎样才能让它变得透明?

的.java:

 package com.example.bskes.customalertdialog;

    import android.content.DialogInterface;
    import android.support.v7.app.AlertDialog;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.widget.Button;
    import android.widget.Toast;

    public class MainActivity extends AppCompatActivity {
        private Button adbtn;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            adbtn = (Button) findViewById(R.id.btnCustomAD);
            adbtn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                    view = LayoutInflater.from(MainActivity.this).inflate(R.layout.rtr_mem_profile_layout, null);

                    builder.setPositiveButton("Thank You", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            Toast.makeText(MainActivity.this, "It's My Pleasure", Toast.LENGTH_SHORT).show();
                        }
                    });

                    builder.setView(view);
                    builder.show();
                }
            });
        }
    }

3 个答案:

答案 0 :(得分:0)

你应该使用它,这将有助于显示dilog的透明背景

getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
        getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);

第一行显示背景上的透明图层,第二行显示窗口视图的实际大小。  它帮助我,使用它

答案 1 :(得分:0)

定义styles.xml文件

中的内容
<style name="CustomDialog" parent="android:Theme.Dialog">
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowBackground">@android:color/transparent</item>
</style>

并将其作为参数传递给AlertDialog构造函数

AlertDialog.Builder imageDialog = new AlertDialog.Builder(SubProducts.this, R.style.CustomDialog);

或者以编程方式,通过Dialog实例,您可以调用

myDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT))

答案 2 :(得分:0)

  

将其添加到styles.xml文件

  <style name="MyDialog">
        <item name="android:windowFrame">@null</item>
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:windowIsFloating">true</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:windowTitleStyle">@null</item>
        <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
        <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
        <item name="android:backgroundDimEnabled">false</item>
        <item name="android:background">@android:color/transparent</item>
    </style>
  

将其添加到您的java文件中:

Dialog dialog = new Dialog(this, R.style.MyDialog);