给AlertDialog自定义或透明背景

时间:2013-07-15 02:49:10

标签: android android-layout android-manifest alertdialog

我曾经努力将活动的背景变为透明。我会正确地将布局背景设置为#00000000,我会在onCreate方法中正确设置getWindow().setBackgroundDrawable(new ColorDrawable(0))。然而,有了这两个变化,我总是会拿着一个灰黑色的容器来保持我的布局。但后来我发现我需要在清单中编辑活动标签以添加android:theme="@android:style/Theme.Holo.Dialog"。瞧!这就是全部。

但现在我需要将AlertDialog的背景变为透明。有很多建议,我已经尝试过很多。我的最新配置如下。但我总是遇到与以前一样的问题:灰黑色的容器,我的布局。现在,我的问题是:如何在清单文件中为自定义对话框添加android:theme="@android:style/Theme.Holo.Dialog"

当前代码:

public void showMyDialog() {
  ContextThemeWrapper ctw = new ContextThemeWrapper(this, R.style.CustomDialog);
  AlertDialog.Builder builder = new AlertDialog.Builder(ctw);
  LayoutInflater inflater = (LayoutInflater) ctw.getSystemService(LAYOUT_INFLATER_SERVICE);
  View view = inflater.inflate(R.layout.dialog_layout,
    (ViewGroup) findViewById(R.id.pr_root));
  builder.setView(view);
  builder.show();
}

风格:

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

<!-- Application theme. -->
    <style name="AppTheme" parent="AppBaseTheme">
        <item name="android:alertDialogStyle">@style/CustomDialog</item>
        <!-- All customizations that are NOT specific to a particular API-level can go here. -->
    </style>

当然dialog_layout是典型的布局.xml文件。

1 个答案:

答案 0 :(得分:2)

使用Dialog而不是AlertDialog.Builder,因此使用setContentView而不是setView。