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

Fug*_*ugo 19 layout android

根据此处的代码, http://developer.android.com/guide/topics/ui/dialogs.html#CustomDialog.我成功地能够创建一个带有背景和按钮的自定义对话框,但仍然有些不对劲.标题栏还有一个空间,视图周围有边框.如何摆脱这些头衔和边界?

这是我的对话

Dialog pauseMenu = new Dialog(this,R.xml.pause_dialog);
pauseMenu.setContentView(R.layout.pause_menu);
return pauseMenu;
Run Code Online (Sandbox Code Playgroud)

这是我的暂停布局

<?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>
Run Code Online (Sandbox Code Playgroud)

小智 90

我想这会帮助你

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);
Run Code Online (Sandbox Code Playgroud)


Mat*_*lis 17

没有标题就无法创建对话框.在该教程中进一步说明:

使用基本Dialog类创建的对话框必须具有标题.如果不调用setTitle(),则用于标题的空间仍为空,但仍然可见.如果您根本不需要标题,则应使用AlertDialog类创建自定义对话框.但是,因为使用AlertDialog.Builder类创建的AlertDialog最简单,所以您无权访问上面使用的setContentView(int)方法.相反,您必须使用setView(View).此方法接受View对象,因此您需要从XML中扩展布局的根View对象.

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


ade*_*190 9

  1. 创建一个这样的类:

    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));
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用此名称对话框在layut文件夹中创建一个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>
    
    Run Code Online (Sandbox Code Playgroud)
  3. 将上面的图像添加到名为bg_custom_dialog.9.png的drawable文件夹中

bg_custom_dialog

  1. 打电话给你的活动:

    CustomDialog customDialog = new CustomDialog(this);
    customDialog.show();
    
    Run Code Online (Sandbox Code Playgroud)