首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自定义DatePickerDialog

自定义DatePickerDialog
EN

Stack Overflow用户
提问于 2018-09-11 18:28:20
回答 1查看 60关注 0票数 0

我想为我的日期选择器设置一个自定义布局。

这是我的DialogFragment:

代码语言:javascript
复制
public class MyDatePickerFragment extends DialogFragment
        implements DatePickerDialog.OnDateSetListener {
        DatePickerDialog.OnDateSetListener listener;

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        listener = (DatePickerDialog.OnDateSetListener) getActivity();
        Calendar cal = Calendar.getInstance();
        // Return custom dialog...
        DatePickerDialog dialog =  new DatePickerDialog(Objects.requireNonNull(getActivity()), this, cal.get(Calendar.YEAR)-18, cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH)); //

        return dialog;
    }

    @Override
    public void onDateSet(DatePicker view, int year, int month, int day) {
        // Do something with the date chosen by the user
        listener.onDateSet(view, year, month, day);
    }
}

这是我想要设置的自定义布局:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<DatePicker xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:datePickerMode="spinner"
    android:calendarViewShown="false"
    android:spinnersShown="true">

</DatePicker>

我不知道怎么设置它。你怎么做到的?

EN

回答 1

Stack Overflow用户

发布于 2018-09-11 19:17:06

我解决这个问题的方法是改用OnCreateView,在布局中引用我的选择器和按钮,并在将我的活动分配为实现之后调用onDateSet的侦听器方法。下面是它看起来的样子:

代码语言:javascript
复制
public class AwesomeDatePickerFragment extends DialogFragment {
        DatePickerDialog.OnDateSetListener listener;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.dialog_date_picker, container);
        listener = (DatePickerDialog.OnDateSetListener) getActivity();
        Button btn = view.findViewById(R.id.picker_button);
        final DatePicker picker = view.findViewById(R.id.awesome_date_picker);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                listener.onDateSet(picker, picker.getYear(), picker.getMonth(), picker.getDayOfMonth());
                dismiss();
            }
        });
        return view;
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52273864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档