web-dev-qa-db-ja.com

AndroidのDatepickerスタイルを変更する方法

現在、登録フォームを作成しています。フィールドの1つは、ユーザーの生年月日用です。日付ピッカーを使用したいのですが、以下に示すようなカレンダーレイアウトは必要ありません。

enter image description here

レイアウトを次のようにして、すべてをスクロールしなくても年と月を簡単に選択できるようにします。

enter image description here

しかし、私はこれをどうやってやるか、またはstyles.xmlファイルの中に何を置くべきか分かりません。どんな助けでも大歓迎です。

6

これをstyle.xmlに追加

<style name="date_picker_theme" parent="@Android:style/Widget.DatePicker">

そして、あなたはこのようにあなたの日付ピッカーにスタイルを適用する必要があります:

<DatePicker
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:id="@+id/datePicker"
        style="@style/date_picker_theme" />
12
Victor V.

でスタイルを作成する

<style name="DatePicker" parent="@Android:style/Theme.Holo.Light">
    <item name="Android:datePickerStyle">@Android:style/Widget.DatePicker</item>
</style>

次に、カスタムフラグメントダイアログのXML

<DatePicker
    Android:theme="@style/DatePicker"
    Android:id="@+id/fragment_date_picker_control"
    Android:datePickerMode="spinner"
    Android:spinnersShown="true"
    Android:calendarViewShown="false"
    Android:layout_marginLeft="@dimen/margin_normal"
    Android:layout_marginRight="@dimen/margin_normal"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:layout_gravity="center_horizontal" />

リンク: http://yogeshkalwar.blogspot.in/2017/08/custom-spinner-datepicker-supporting-n70.html

6
yogikalwar

DatePickerスタイルをグローバルに設定するには、style.xmlに以下を追加するか、既存のコンテンツを調整します。

<resources>
  <style name="AppTheme" parent="@style/Theme.AppCompat.Light">
    <item name="Android:datePickerStyle">@style/MyDatePicker</item>
  </style>
  ...
</resources>

カスタマイズしたDatePickerスタイルをstyle.xmlまたは別のファイルで定義します。例:

<resources>
  <style name="MyDatePicker" parent="@Android:style/Widget.DatePicker">
    <item name="Android:calendarViewShown">false</item>
    <item name="Android:datePickerMode">spinner</item>
  </style>
</resources>
1
Bjørn Egil

手遅れになるかもしれませんが、プログラムでこれらのように設定できます。
onClickリスナー内に適用します。

        DatePickerDialog datePicker = new DatePickerDialog(
                this,
                Android.R.style.Theme_Holo_Light_Dialog_MinWidth,
                datePickerListener,
                cal.get(Calendar.YEAR),
                cal.get(Calendar.MONTH),
                cal.get(Calendar.DAY_OF_MONTH));
        datePicker.setCancelable(false);
        datePicker.setTitle("Select the date");
        datePicker.show();

Android.R.style.Theme_Holo_Light_Dialog_MinWidth必要なスタイルを作成します。
それが誰かを助けることを願っています。

0
Muhammad Faisal

上記のプロパティはXMLです。プログラムで設定したい場合は、以下のコードを使用できますが、このコードが機能しているかどうかは確認していません。

datepickerDialog_object.getDatePicker().setSpinnersShown(true);
datepickerDialog_object.getDatePicker().setCalendarViewShown(false);
0
Anshul Verma

こんにちはこれを最も簡単な方法で試してください...

public void datePicker(final Context context, final EditText editText, final String type) {
        Calendar calendar = Calendar.getInstance();
        final SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd", Locale.US);
        DatePickerDialog datePickerDialog = new DatePickerDialog(context, R.style.DialogTheme, new DatePickerDialog.OnDateSetListener() {

            public void onDateSet(Android.widget.DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                Calendar newDate = Calendar.getInstance();
                newDate.set(year, monthOfYear, dayOfMonth);
                newDate.set(year, monthOfYear, dayOfMonth);
                editText.setText(dateFormatter.format(newDate.getTime())

            }

        }, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH));
//        datePickerDialog.getDatePicker().setMinDate(System.currentTimeMillis() - 1000);
        datePickerDialog.show();
    }

Style.xmlのAndroidは行の下に追加します

 <style name="DialogTheme" parent="Theme.AppCompat.Light.Dialog">
        <item name="colorAccent">@color/AppDarkBlue</item>
    </style>
0
Muhammad Haroon

DatePickerDialogには、目的のレイアウトを設定する便利なメソッドがあります。

public DatePickerDialog(@NonNull Context context, @StyleRes int themeResId,
        @Nullable OnDateSetListener listener, int year, int monthOfYear, int dayOfMonth) {
    this(context, themeResId, listener, null, year, monthOfYear, dayOfMonth);
}


public static final int MODE_SPINNER = 1;
public static final int MODE_CALENDAR = 2;

ThemesResIdに1または2を渡すとうまくいきます。