首先:在values下的styles.xml中添加样式
<style name="Dialog" parent="android:style/Theme.Dialog">
<item name="android:background">#00000000</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
</style>
然后,写一个dialog的布局文件,这个布局文件我写的带有一个全屏按钮,可以点击退出这个dialog
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"
android:orientation="vertical"
android:padding="20.0dip" >
<LinearLayout
android:id="@+id/custom_dialog"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/setting_list_background"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/content"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center" >
<ImageView
android:id="@+id/xiu_fu_page_flage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/yu_yin_flag_image_light" />
</LinearLayout>
</LinearLayout>
<ImageButton
android:id="@+id/dialog_close_btn"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="0px"
android:layout_marginTop="0px"
/>
</FrameLayout>
然后,定义一个类,继承自Dialog,内容如下
package com.scwindow;
import android.annotation.SuppressLint;
import android.app.ActionBar.LayoutParams;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageButton;
import android.widget.LinearLayout;
@SuppressLint("NewApi")
public class CustomDialog extends Dialog {
public CustomDialog(Context context) {
super(context);
}
public CustomDialog(Context context, int theme) {
super(context, theme);
}
@SuppressLint("InlinedApi")
public static class Builder {
private Context context;
private DialogInterface.OnClickListener positiveButtonClickListener;
public Builder(Context context) {
this.context = context;
}
/**
* Set the positive button resource and it's listener
*
* @param positiveButtonText
* @return
*/
public Builder setPositiveButton(int positiveButtonText,
DialogInterface.OnClickListener listener) {
this.positiveButtonClickListener = listener;
return this;
}
public Builder setPositiveButton(String positiveButtonText,
DialogInterface.OnClickListener listener) {
this.positiveButtonClickListener = listener;
return this;
}
public CustomDialog create() {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
// instantiate the dialog with the custom Theme
final CustomDialog dialog = new CustomDialog(context,
R.style.Dialog);
View layout = inflater.inflate(R.layout.dialog_normal_layout, null);
if (positiveButtonClickListener != null) {
((ImageButton) layout.findViewById(R.id.dialog_close_btn))
.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
positiveButtonClickListener.onClick(dialog,
DialogInterface.BUTTON_POSITIVE);
}
});
}
dialog.addContentView(layout, new LayoutParams(
LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
dialog.setContentView(layout);
return dialog;
}
}
}
然后,由于我这个diaolog是其他文件调用的MainActivity中的dialog,所以,我这样使用的
在MaiaActivity中生成这个dialog
public static CustomDialog dialog;
CustomDialog.Builder builder = new CustomDialog.Builder(MainActivity.context);
dialog = builder.create();
别忘了
public void onDestory(){
if(dialog!=null && dialog.isShowing()){
dialog.dismiss();
}
super.onDestroy();
}
最后,我在调用的地方这样用
显示:
MainActivity.dialog.show();
隐藏:
MainActivity.dialog.hide();