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

时间:2017-02-12 05:15:41

标签: android android-datepicker datepickerdialog

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

<item name="android:datePickerMode">spinner</item>

我使用的是最低版本的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) {

}

}

谢谢!

2 个答案:

答案 0 :(得分: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>

这是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();
    }
}

谢谢!

答案 1 :(得分:0)

我的建议 首先获取API版本..如果API版本低于21,则将spinner visible和date picker设置为不可见 获取API版本。检查此链接:

Retrieving Android API version programmatically

如果这可以解决您的问题,请告诉我,我不确定我的建议是否可靠

谢谢!