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

基于这里的代码, 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> 

  • Android布局 - 与ImageView的alignment问题
  • 我可以在一个Android绘图中使用多个形状吗?
  • 资源$ NotFoundException在graphics布局ADT预览(但实际上应用程序工程)
  • 'textEmailAddress'和'textWebEmailAddress'有什么区别
  • 以编程方式更改布局高度,ClassCastException?
  • 如何在屏幕方向更改后恢复折叠工具栏布局状态
  • 如果最初设置为不可见,则android setVisibility不会显示
  • Challange:ViewPager的自定义animation。 更改所选元素的高度(查看倍数)
  • 没有标题就不能创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();