自定义对话框没有标题和边框

基于这里的代码, http://developer.android.com/guide/topics/ui/dialogs.html#CustomDialog 。 我成功地能够创build一个背景和button的自定义对话框,但还是有些不对。 标题栏还有一个空间,视图周围有边框。 如何摆脱这些标题和边界?

这是我的对话

Dialog pauseMenu = new Dialog(this,R.xml.pause_dialog); pauseMenu.setContentView(R.layout.pause_menu); return pauseMenu; 

这是我的暂停布局

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="wrap_content" android:id="@+id/linearLayout1" android:layout_width="wrap_content" android:background="@drawable/pause_menu_cropped" android:layout_gravity="center" android:gravity="center|center_horizontal"> <TableLayout android:layout_width="wrap_content" android:id="@+id/tableLayout1" android:layout_height="wrap_content"> <ImageButton android:src="@drawable/pause_button_quit" android:layout_width="wrap_content" android:background="@drawable/pause_button_quit" android:id="@+id/imageButton2" android:layout_height="wrap_content"></ImageButton> <ImageButton android:src="@drawable/pause_button_option" android:layout_width="wrap_content" android:background="@drawable/pause_button_option" android:id="@+id/imageButton1" android:layout_height="wrap_content"></ImageButton> </TableLayout> </LinearLayout> 

Solutions Collecting From Web of "自定义对话框没有标题和边框"

没有标题就不能创build对话框。 在那个教程中进一步提到:

与基础Dialog类进行的对话框必须有一个标题。 如果不调用setTitle(),那么用于标题的空间保持空白,但仍然可见。 如果你根本不需要标题,那么你应该使用AlertDialog类创build自定义对话框。 但是,由于使用AlertDialog.Builder类创buildAlertDialog最简单,因此无法访问上面使用的setContentView(int)方法。 相反,你必须使用setView(View)。 这个方法接受一个View对象,所以你需要从XML中膨胀布局的根View对象。

此答案使用自定义样式解决标题和边框问题。

我想这会帮助你

gameOver将是对话框名称,在setContentView它将是你自定义的对话框布局

 gameOver = new Dialog(Main.this); gameOver.requestWindowFeature(Window.FEATURE_NO_TITLE); gameOver.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); gameOver.setCancelable(false); gameOver.setContentView(R.layout.gameover); 
  1. 做一个这样的class级:

     public class CustomDialog extends Dialog { public AlertFinishiView(Context context) { super(context); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.dialog); getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); } } 
  2. 用这个名称对话框在layut文件夹中创build一个XML

     <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/transparent"> <RelativeLayout android:layout_width="220dp" android:layout_height="140dp" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:background="@drawable/bg_custom_dialog" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:text="Button" /> </RelativeLayout> </RelativeLayout> 
  3. 在名字为bg_custom_dialog.9.png的可绘制文件夹中添加上面的图片

bg_custom_dialog

  1. 打电话给你的活动:

     CustomDialog customDialog = new CustomDialog(this); customDialog.show(); 
 Dialog dialog = new Dialog(Main.this); dialog.getWindow(); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
 Dialog dialog = new Dialog(context); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 

在styles.xml中尝试以下样式:

 <style name="free_floating_dialog" parent="@android:style/Theme.Holo.Light.Dialog"> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowIsFloating">true</item> <item name="android:windowNoTitle">true</item> <item name="android:windowCloseOnTouchOutside">false</item> </style> 

有关更多选项,请参阅“Android.Holo.Light.Dialog”,它是Android源代码(自Honeycomb以来)的一部分,或任何其他基于您的对话框样式。

然后,简单地使用这种风格作为你自己对话的基础:

 Dialog myDialog = new Dialog(getActivity(), R.style.free_floating_dialog); myDialog.setContentView(R.layout.myContent); 

使用它,它完美的作品;

  dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); //before dialog.setContentView(R.layout.your_dialog_layout); 

如何在Android中创build完全自定义的对话/popup窗口(更改叠加颜色和对话窗口布局)

这会给你尽可能的方式,这将有助于改善这个问题

我使用这个代码,它工作正常:

 AlertDialog.Builder builder = new AlertDialog.Builder(contextActivity,android.R.style.Theme_Holo_Dialog_NoActionBar); AlertDialog alertDialog = builder.create(); alertDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); alertDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); alertDialog.setView(myLayout,0,0,0,0); alertDialog.show();