您的位置:首页 > 移动开发 > Android开发

android如何设置全屏的DialogFragment以及自定义提示框支持横竖屏显示

2015-03-18 12:02 856 查看
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;
}

}


R.layout.fragment_layout.xml
<?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");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: