根据此处的代码, 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;
这是我的暂停布局
<?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>
答案 0 :(得分: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);
答案 1 :(得分:17)
如果没有标题,则无法创建对话框。在该教程中进一步提到:
使用基本对话框进行的对话 班级必须有头衔。如果你不这样做 调用setTitle(),然后使用空格 标题仍然是空的,但仍然 可见。如果你不想要一个标题 所有,然后你应该创建你的 使用AlertDialog的自定义对话框 类。但是,因为一个AlertDialog 最简单的创建 AlertDialog.Builder类,你没有 有权访问setContentView(int) 上面使用的方法。相反,你必须 使用setView(View)。这个方法接受 一个View对象,所以你需要膨胀 布局的根视图对象来自 XML。
This answer使用自定义样式解决了标题和边框问题。
答案 2 :(得分:9)
创建一个这样的类:
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));
}
}
使用此名称对话框在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>
将上面的图片添加到名为bg_custom_dialog.9.png
致电您的活动:
CustomDialog customDialog = new CustomDialog(this);
customDialog.show();
答案 3 :(得分:3)
Dialog dialog = new Dialog(Main.this);
dialog.getWindow();
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
答案 4 :(得分:3)
Dialog dialog = new Dialog(context);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
答案 5 :(得分:1)
在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>
有关更多选项,请参阅“Theme.Holo.Light.Dialog”,它是Android源代码的一部分(自Honeycomb以来),或您基于其他任何其他对话框样式。
然后只需使用此样式作为您自己的对话框的基础:
Dialog myDialog = new Dialog(getActivity(), R.style.free_floating_dialog);
myDialog.setContentView(R.layout.myContent);
答案 6 :(得分:1)
使用它,它完美地运作;
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); //before
dialog.setContentView(R.layout.your_dialog_layout);
答案 7 :(得分:0)
我使用此代码并且工作正常:
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();