Android无边框对话框

kwo*_*ger 28 android dialog

我使用AlertDialog.Builder创建了一个AlertDialog,但是Dialog边框在屏幕上占用了太多空间.如何删除边框?我尝试使用另一个Activity来模拟具有透明背景的对话框,但是对话框被重复使用,并且每次创建一个新的Activity都会引入大量的延迟.

这里的答案提到它可以在ApiDemos中找到,但我似乎无法找到它.

kwo*_*ger 64

好吧,我会回答我自己的问题.基本上,不使用AlertDialog.Builder,而是使用它的构造函数创建常规Dialog,并使用合适的主题而不是默认的Dialog主题.

所以你的代码看起来像这样:

Dialog dialog = new Dialog(this, android.R.style.Theme_Translucent_NoTitleBar);
Run Code Online (Sandbox Code Playgroud)

希望这有助于其他人.

  • 如果我们这样做,那么dialog.setCanceledOnTouchOutside(true); 将无效...如何处理呢? (4认同)
  • 但它使对话框全屏..如何防止它不是全屏,因为我写上面的代码 (3认同)
  • 要点显示没有标题或边框的自定义浮动(弹出)对话框:https://gist.github.com/2643546 (2认同)

小智 33

这是我的解决方案,以获得仅显示您的内容的对话框.

    Dialog dialog = new Dialog(this,R.style.ThemeDialogCustom);
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);

    //you can move the dialog, so that is not centered
    // dialog.getWindow().getAttributes().y = 50; //50 should be based on density

    dialog.setContentView(yourLinearLayout);
    dialog.setCancelable(true);
    //dialog.setOnCancelListener(cancelListener);
    dialog.show();
Run Code Online (Sandbox Code Playgroud)

themes.xml //位于project/res/values中

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <style name="ThemeDialogCustom">
    <item name="android:windowFrame">@null</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
    <item name="android:windowBackground">@color/transparent_color</item>
    <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
    <item name="android:colorBackgroundCacheHint">@null</item>
   </style>
</resources>
Run Code Online (Sandbox Code Playgroud)

colors.xml //也位于那里

<?xml version="1.0" encoding="utf-8"?>
<resources>
       <color name="transparent_color">#00000000</color>
</resource>
Run Code Online (Sandbox Code Playgroud)

  • 这是一个很好的解决方案.只需给你相同的对话框就可以完美地解决问题,但没有边框!这是一个比公认的解决方案更合适的解决方案. (4认同)

jon*_*asb 24

android.R.style.Theme_Translucent_NoTitleBar如果您希望对话框全屏,则使用作品.另一种方法是创建自己的样式,如下所示:

<style
    name="Theme_Dialog_Translucent"
    parent="android:Theme.Dialog">
    <item
        name="android:windowBackground">@null</item>
</style>
Run Code Online (Sandbox Code Playgroud)


小智 7

试试这个:D

 Dialog popUpView= new Dialog(this);
 popUpView.getWindow().setBackgroundDrawable(new ColorDrawable(0));
Run Code Online (Sandbox Code Playgroud)