DialogFragment是Android3.0引入的,也是谷歌官方推荐用来创建对话框的类。
DialogFragment相对与Dialog的最大优点是在手机配置变化,导致Activity需要重新创建时,例如旋屏,基于DialogFragment的对话框将会由FragmentManager自动重建,然而基于Dialog实现的对话框则会消失。
实现标题内容的代码如下,代码中已经标注了详细的注释:
import android.app.DialogFragment;
import android.content.Context;
import android.content.res.Configuration;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.Button;
import android.widget.RelativeLayout;
public class FullScreenDialogFragment extends DialogFragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
//去掉dialog的标题栏
getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE);
View view = inflater.inflate(R.layout.fragment_layout, container,
false);
Button btn = (Button) view.findViewById(R.id.remind_right_button);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
getDialog().dismiss();
}
});
/**
*通过屏幕方向来切换相应的图片
*/
RelativeLayout relativeLayout = (RelativeLayout) view
.findViewById(R.id.bg_layout);
if (!isScreenOriatationPortrait(getActivity())) {
relativeLayout.setBackgroundResource(R.drawable.remind_dialog);
}
return view;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//配置Dialog全屏
setStyle(DialogFragment.STYLE_NORMAL,
android.R.style.Theme_Black_NoTitleBar_Fullscreen);
}
/**
* 判断屏幕是否是竖屏
* @param context
* @return
*/
public static boolean isScreenOriatationPortrait(Context context) {
return context.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/bg_layout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/remind_dialog_port" >
<Button
android:id="@+id/remind_right_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="30dp"
android:text="确定"
/>
</RelativeLayout>
在Activity中调用:
FullScreenDialogFragment fullScreenDialogFragment = new FullScreenDialogFragment();
fullScreenDialogFragment.show(getFragmentManager(), "FullScreenDialogFragment");