web-dev-qa-db-ja.com

Android AppCompatによるマテリアルデザインデイトピッカー

AppCompatを使用して、5.0以前のアプリケーションに新しいAndroid 5.0 Material Design Datepickerを追加しようとしています。

compile "com.Android.support:appcompat-v7:21.0.0"

build.gradleファイルに追加し、テーマを次のように更新しました。

<?xml version="1.0" encoding="utf-8"?>
<style name="AppTheme.Base" parent="@style/Theme.AppCompat.Light">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="Android:windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
</style>

ただし、Datepickerは次のようになります。
old datepicker
そしてこれは好きではありません:
material design datepicker

5.0以前のデバイスで新しいdatepickerを動作させる方法を教えてもらえますか?

前もって感謝します。

30
Androidicus

更新:

Jfcartierが指摘したように、 MaterialDateTimePicker もあります。それはおそらく、themable theable APIを備えているため、以下のソリューションよりも優れたソリューションです。


Android-betterpickers ライブラリを試すことができます。希望するウィジェットのように見えるCalendarDatePickerDialogウィジェットがあります。明るいテーマと暗いテーマを提供しますが、色をカスタマイズするには、ライブラリプロジェクトとして追加し、コードを自分で変更する必要があります。

ライブラリをプロジェクトに追加すると、使い方は簡単です。

    // Create date picker listener.
    CalendarDatePickerDialog.OnDateSetListener dateSetListener = new CalendarDatePickerDialog.OnDateSetListener() {
        @Override
        public void onDateSet(CalendarDatePickerDialog dialog, int year, int monthOfYear, int dayOfMonth) {
            // Set date from user input.
            Calendar date = Calendar.getInstance();
            date.set(Calendar.HOUR_OF_DAY, 9);
            date.set(Calendar.MINUTE, 0);
            date.set(Calendar.YEAR, year);
            date.set(Calendar.MONTH, monthOfYear);
            date.set(Calendar.DAY_OF_MONTH, dayOfMonth);

            // Do as you please with the date.
        }
    };

    // Create dismiss listener.
    CalendarDatePickerDialog.OnDialogDismissListener dismissListener = new CalendarDatePickerDialog.OnDialogDismissListener() {
        @Override
        public void onDialogDismiss(DialogInterface dialoginterface) {
            // Do something when the user dismisses the dialog.
        }
    };

    // Show date picker dialog.
    CalendarDatePickerDialog dialog = new CalendarDatePickerDialog();
    dialog.setOnDateSetListener(dateSetListener);
    dialog.setOnDismissListener(dismissListener);
    dialog.setThemeDark(false);
    dialog.show(getSupportFragmentManager(), "DATE_PICKER_TAG");

最終結果はこのようになります(品質が悪いためごめん)。

AOSP Calendar Picker

26
Fernanda Bari

this libraryが気に入りました。 Flavien Laurent Date and Time Picker のクローンであり、いくつかの改良が加えられています。どちらも Android 4.3 + のGoogleの公式の日付と時刻のピッカーに基づいていますが、Android 2.1+。

0
mixel