设为首页 加入收藏

TOP

Android 官方推荐:DialogFragment 创建对话框(一)
2015-08-31 21:25:00 来源: 作者: 【 】 浏览:72
Tags:Android 官方 推荐 :DialogFragment 创建 对话

1、 概述


在DialogFragment产生之前,我们创建对话框:一般采用AlertDialog和Dialog。注:官方不推荐直接使用Dialog创建对话框。


2、 好处与用法


使用DialogFragment来管理对话框,当旋转屏幕和按下后退键时可以更好的管理其声明周期,它和Fragment有着基本一致的声明周期。且DialogFragment也允许开发者把Dialog作为内嵌的组件进行重用,类似Fragment(可以在大屏幕和小屏幕显示出不同的效果)。上面会通过例子展示这些好处~


使用DialogFragment至少需要实现onCreateView或者onCreateDIalog方法。onCreateView即使用定义的xml布局文件展示Dialog。onCreateDialog即利用AlertDialog或者Dialog创建出Dialog。


本文相关源码下载地址


------------------------------------------分割线------------------------------------------


具体下载目录在 /2015年资料/8月/8日/Android 官方推荐? DialogFragment 创建对话框/


------------------------------------------分割线------------------------------------------


3、 重写onCreateView创建Dialog


a)布局文件,我们创建一个设置名称的布局文件:



? ? android:layout_width="wrap_content"
? ? android:layout_height="wrap_content" >


? ? ? ? ? ? android:id="@+id/id_label_your_name"
? ? ? ? android:layout_width="wrap_content"
? ? ? ? android:layout_height="32dp"
? ? ? ? android:gravity="center_vertical"
? ? ? ? android:text="Your name:" />


? ? ? ? ? ? android:id="@+id/id_txt_your_name"
? ? ? ? android:layout_width="match_parent"
? ? ? ? android:layout_height="wrap_content"
? ? ? ? android:layout_toRightOf="@id/id_label_your_name"
? ? ? ? android:imeOptions="actionDone"
? ? ? ? android:inputType="text" />


? ? ? ? ? ? android:id="@+id/id_sure_edit_name"
? ? ? ? android:layout_width="wrap_content"
? ? ? ? android:layout_height="wrap_content"
? ? ? ? android:layout_alignParentRight="true"
? ? ? ? android:layout_below="@id/id_txt_your_name"
? ? ? ? android:text="ok" />



b)继承DialogFragment,重写onCreateView方法


package com.example.zhy_dialogfragment;


import android.app.DialogFragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;


public class EditNameDialogFragment extends DialogFragment
{



?@Override
?public View onCreateView(LayoutInflater inflater, ViewGroup container,
? ?Bundle savedInstanceState)
?{
? View view = inflater.inflate(R.layout.fragment_edit_name, container);
? return view;
?}


}


c)测试运行:


Main方法中调用:


public void showEditDialog(View view)
?{
? EditNameDialogFragment editNameDialog = new EditNameDialogFragment();
? editNameDialog.show(getFragmentManager(), "EditNameDialog");
?}


效果图:



可以看到,对话框成功创建并显示出来,不过默认对话框有个讨厌的标题,我们怎么去掉呢:可以在onCreateView中调用getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE);即可去掉。即:


public class EditNameDialogFragment extends DialogFragment
{


?@Override
?public View onCreateView(LayoutInflater inflater, ViewGroup container,
? ?Bundle savedInstanceState)
?{
? getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE);
? View view = inflater.inflate(R.layout.fragment_edit_name, container);
? return view;
?}


}


效果图:


Android 官方推荐 : DialogFragment 创建对话框


很完美的去掉了讨厌的标题。


4、 重写onCreateDialog创建Dialog在onCreateDialog中一般可以使用AlertDialog或者Dialog创建对话框,不过既然google不推荐直接使用Dialog,我们就使用AlertDialog来创建一个登录的对话框。


a)布局文件



? ? android:layout_width="wrap_content"
? ? android:layout_height="wrap_content"
? ? android:orientation="vertical" >


? ? ? ? ? ? android:layout_width="match_parent"
? ? ? ? android:layout_height="64dp"
? ? ? ? android:background="#FFFFBB33"
? ? ? ? android:contentDescription="@string/app_name"
? ? ? ? android:scaleType="center"
? ? ? ? android:src="@drawable/title" />


? ? ? ? ? ? android:id="@+id/id_txt_username"
? ? ? ? android:layout_width="match_p

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Android 屏幕旋转 处理 AsyncTask.. 下一篇Android Fragment 真正的完全解析

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: