Android无边界对话框

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

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

Solutions Collecting From Web of "Android无边界对话框"

好的,我会回答我自己的问题。 基本上,而不是使用AlertDialog.Builder,使用它的构造函数创build一个常规的对话框,并使用适当的主题,而不是默认的对话框主题。

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

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

希望这可以帮助别人。

这是我的解决scheme,获得一个只显示您的内容的对话框。

  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(); 

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> 

colors.xml //也位于那里

 <?xml version="1.0" encoding="utf-8"?> <resources> <color name="transparent_color">#00000000</color> </resource> 

使用android.R.style.Theme_Translucent_NoTitleBar作品,如果你想对话框是全屏。 另一种方法是创build自己的风格,如下所示:

 <style name="Theme_Dialog_Translucent" parent="android:Theme.Dialog"> <item name="android:windowBackground">@null</item> </style> 

试试这个:D

  Dialog popUpView= new Dialog(this); popUpView.getWindow().setBackgroundDrawable(new ColorDrawable(0)); 

我添加了一个透明的像素绘制,并使用下面的代码:

 dialog.getWindow().setBackgroundDrawableResource(R.drawable.transpix); 

如果你有2个边框,你需要使用一个ContextThemeWrapper,它将只显示一个边框,如你所愿:)

 ContextThemeWrapper wrapper = new ContextThemeWrapper(this, android.R.style.Theme_Holo); final LayoutInflater inflater = (LayoutInflater) wrapper.getSystemService(LAYOUT_INFLATER_SERVICE); AlertDialog.Builder builder = new AlertDialog.Builder(wrapper); 

你可以要求build设者执行反向背景。 为我工作,以显示一个PNG源的无边界闪屏。

在您的资源文件中,创build一个名为例如null_image.xml的xml文件,其中包含以下内容:

 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" > <solid android:color="#0000" /> <size android:height="1dp" android:width="1dp" /> </shape> 

在你的java代码中,获取对话框窗口并将xml文件设置为drawable资源,如下所示:根据你的上下文:

 Dialog dialog = new Dialog(getContext()); Window window = dialog.getWindow(); window.setBackgroundDrawableResource(R.drawable.null_image); 

就是这样,享受。