这是我自定义Dialog 的样式
不过首先我们还是要做一个Dialog的样式的布局
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" > <RelativeLayout android:layout_marginLeft="20dp" android:id="@+id/exitGameBackground" android:layout_width="wrap_content" android:layout_height="160dp" android:layout_centerHorizontal="true" android:background="@drawable/main_dialog" > <Button android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:layout_marginBottom="15dp" android:layout_marginLeft="35dp" android:id="@+id/btn_ok" android:text="确定" android:layout_height="wrap_content" android:layout_width="100dp" android:background="@drawable/main_exit_dialog_y" /> <TextView android:layout_marginTop="10dp" android:layout_marginLeft="35dp" android:id="@+id/main_exit_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@color/black" android:textSize="20sp" android:layout_alignParentTop="true" android:text="退出"/> <View android:id="@+id/view_dialog" android:layout_marginTop="5dp" android:layout_below="@+id/main_exit_title" android:layout_width="fill_parent" android:layout_height="1dp" android:background="@drawable/main_dialog_line"/> <TextView android:id="@+id/main_exit_text" android:layout_below="@+id/view_dialog" android:layout_marginTop="10dp" android:layout_marginLeft="35dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@color/black" android:textSize="16sp" android:text="你确定退出和彩彩票客户端吗?"/> <Button android:layout_alignParentBottom="true" android:layout_alignParentRight="true" android:layout_marginBottom="15dp" android:layout_marginRight="35dp" android:id="@+id/btn_cancel" android:text="取消" android:layout_height="wrap_content" android:layout_width="100dp" android:background="@drawable/main_exit_dialog_y" /> </RelativeLayout> </RelativeLayout>
第二就是写一个方法,显示出这个Dialog 在这个还是先要new 一个Dialog 使dialog.show 出来,后面 的才是重要的。。
用这个dialog 的到当前的窗口,然后在给这个窗口附上一个contentView 也就是你上面编辑的布局
private void showExitGameAlert() { final AlertDialog dlg = new AlertDialog.Builder(this).create(); dlg.show(); Window window = dlg.getWindow(); window.setContentView(R.layout.main_exit); Button ok = (Button) window.findViewById(R.id.btn_ok); ok.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { finish(); Process.killProcess(Process.myPid()); } }); Button cancel = (Button) window.findViewById(R.id.btn_cancel); cancel.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { dlg.cancel(); } }); }
这里面 确定和取消的监听都是对控件本身进行的监听
最后重写返回键,在点击返回键的时候调用这个方法就会出现Dialog
在这里返回键的重写分为两种,一种是处理完内容后不会向上一级传播 也就是onbackpressed 另一种会向上一级传播的onKeyDown