实现步骤特别简单:
在MainActivity的Button(或ImageView或其他)的点击事件中作如下处理即可弹出dialogfragment:
最后一步:传递数据到MainActivity中:
1.新建DialogFragment类,在OnCreateView中返回你自定义的view.
public class ADDialogFragment extends DialogFragment{ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { //加这句话去掉自带的标题栏 getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE); View view = inflater.inflate(R.layout.dialogfragment_person, null); //init(view); return view; }}
自定义dialogfragment_person的布局文件如下:
xml version="1.0" encoding="utf-8"<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:background="@color/white" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="15.5dp" android:gravity="center_horizontal" android:text="请选择" android:textColor="#666666" android:textSize="16sp"/> <TextView android:id="@+id/tv1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="16.5dp" android:gravity="center_horizontal" android:text="1人" android:textColor="#333333" android:textSize="18sp"/> <TextView android:id="@+id/tv2" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="16.5dp" android:gravity="center_horizontal" android:text="2人" android:textColor="#333333" android:textSize="18sp"/> <TextView android:id="@+id/tv3" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="16.5dp" android:gravity="center_horizontal" android:text="3人" android:textColor="#333333" android:textSize="18sp"/> <TextView android:id="@+id/tv4" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="16.5dp" android:layout_marginBottom="16.5dp" android:gravity="center_horizontal" android:text="4人" android:textColor="#333333" android:textSize="18sp"/></LinearLayout>
ADDialogFragment dialogFragment = new ADDialogFragment();
dialogFragment.show(getFragmentManager(),"android");ok了,这时你会发现它显示在页面中央,但是我们想让dialogfragment显示到页面底部,那么只需在DialogFragment中添加如下代码即可:@Overridepublic void onStart() { super.onStart(); Window window = getDialog().getWindow(); WindowManager.LayoutParams params = window.getAttributes(); params.gravity = Gravity.BOTTOM; params.width = WindowManager.LayoutParams.MATCH_PARENT; window.setAttributes(params); //设置背景透明 window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));}
最后一步:传递数据到MainActivity中:
在dialogfragment中:
public interface OnDialogListener { void onDialogClick(String person);}public void setOnDialogListener(OnDialogListener dialogListener){ this.mlistener = dialogListener;}
在Textview的点击事件中:
public OnDialogListener mlistener;
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.tv1:
mlistener.onDialogClick("1");
dismiss();
break;
case R.id.tv2:
mlistener.onDialogClick("2");
dismiss();
break;
case R.id.tv3:
mlistener.onDialogClick("3");
dismiss();
break;
case R.id.tv4:
mlistener.onDialogClick("4");
dismiss();
break;
}
}
在MainActivity中实现此接口即可:
dialogFragment.setOnDialogListener(new PersonDialogFragment.OnDialogListener() {
@Override
public void onDialogClick(String person) {
ToastUtil.showToast(person);
}
});
本文介绍如何创建并自定义DialogFragment,使其显示在屏幕底部,并实现数据回调至MainActivity的方法。
413

被折叠的 条评论
为什么被折叠?



