DialogFragment在android 3.0时被引入。是一种特殊的Fragment,用于在Activity的内容之上展示一个模态的对话框。典型的用于:展示警告框,输入框,确认框等等。
总结起来分为三个步骤:
1、创建DialogFragment Layout布局;
2、写一个类继承DialogFragment,完成相关代码;
3、在MainActivity中调用,显示该DialogFragment ;
具体步骤:
1、创建DialogFragment Layout布局;
<style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="3"
android:gravity="center"
android:text="注册失败"
android:textColor="#000000"
android:textSize="20sp" />
<TextView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="2"
android:gravity="center"
android:text="手机已注册"
android:textColor="#c3c3c3"
android:textSize="20sp" />
<Button
android:id="@+id/confirm"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:gravity="center"
android:text="确定"
android:textColor="#ff55aab7"
android:textSize="20sp" />
</LinearLayout>
布局:
2、写一个类继承DialogFragment;
import android.app.DialogFragment;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.View.OnClickListener;
import android.view.WindowManager;
public class mDialogFragment extends DialogFragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
//绘制DialogFragment的View,返回一个view对象
View view = inflater.inflate(R.layout.dialogfrag, container, false);
//DialogFragment设置为无标题
getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE);
//DialogFragment设置为透明的
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
//设置DialogFragment的位置
final WindowManager.LayoutParams layoutParams = getDialog().getWindow().getAttributes();
layoutParams.gravity = Gravity.BOTTOM;
getDialog().getWindow().setAttributes(layoutParams);
<span style="white-space:pre"> </span>//点击确认DialogFragment消失
(view.findViewById(R.id.confirm)).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
dismiss();
}
});
return view;
}
@Override
public void onResume() {
// TODO Auto-generated method stub
super.onResume();
//设置DialogFragment的大小,在onResume()中设置;
getDialog().getWindow().setLayout(1080, 800);
}
}
3、在MainActivity中调用,显示该 DialogFragment ;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.View.OnClickListener;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//点击 DialogFragment
findViewById(R.id.dialogfragment).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//实例化DialogFragment
final mDialogFragment mdialogFragment = new mDialogFragment();
//show dialogFragment
mdialogFragment.show(getFragmentManager(), "confirmDialogFragment");
//设置1.5秒后,dialogFragment消失
new Handler().postDelayed(
new Runnable() {
@Override
public void run() {
mdialogFragment.dismiss();
}
}, 1500);
}
});
}
}
点击DialogFragment