如何将Android DatePicker模式设置为spinner,用于21级以下的API

rac*_*min 4 android android-datepicker datepickerdialog

我想用模式微调器而不是日历显示DatePickerDialog.在我的styles.xml中,我尝试使用此属性,但它说我应该使用的最小SDK版本是API 21.

<item name="android:datePickerMode">spinner</item>
Run Code Online (Sandbox Code Playgroud)

我使用的是最低版本的SDK 18.如果API低于API 21,如何将默认日期选择器模式设置为微调器?

这是我日期选择器的Java代码:

public class MyDatePicker extends DialogFragment implements DatePickerDialog.OnDateSetListener {

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    DatePickerDialog datePickerDialog = new DatePickerDialog(getContext(), R.style.MyTheme, this, 0, 0, 0 );
    return datePickerDialog;
}

@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {

}
Run Code Online (Sandbox Code Playgroud)

}

谢谢!

rac*_*min 7

找到答案.我没有在onCreateDialog方法中创建一个新的DatePickerDialog,而是在方法中为日期选择器创建了自己的布局.

这是xml布局:

<?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="match_parent">

<DatePicker
    android:id="@+id/dialog_date_datePicker"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:calendarViewShown="false"
    android:datePickerMode="spinner"
    android:spinnersShown="true">
</DatePicker>
Run Code Online (Sandbox Code Playgroud)

这是Java代码:

public class MyDatePicker extends DialogFragment {
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        View v = getActivity().getLayoutInflater().inflate(R.layout.datepicker, null);
        return new AlertDialog.Builder(getActivity()).setView(v).create();
    }
}
Run Code Online (Sandbox Code Playgroud)

谢谢!


小智 0

我的建议首先获取 API 版本。如果 API 版本低于 21,则将微调器设置为可见,将日期选择器设置为不可见以获取 API 版本。检查此链接:

以编程方式检索 Android API 版本

让我知道这是否可以解决您的问题,我不确定我的建议是否可靠

谢谢!