現在、登録フォームを作成しています。フィールドの1つは、ユーザーの生年月日用です。日付ピッカーを使用したいのですが、以下に示すようなカレンダーレイアウトは必要ありません。
レイアウトを次のようにして、すべてをスクロールしなくても年と月を簡単に選択できるようにします。
しかし、私はこれをどうやってやるか、またはstyles.xmlファイルの中に何を置くべきか分かりません。どんな助けでも大歓迎です。
これを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" />
でスタイルを作成する
<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
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>
手遅れになるかもしれませんが、プログラムでこれらのように設定できます。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
必要なスタイルを作成します。
それが誰かを助けることを願っています。
上記のプロパティはXMLです。プログラムで設定したい場合は、以下のコードを使用できますが、このコードが機能しているかどうかは確認していません。
datepickerDialog_object.getDatePicker().setSpinnersShown(true);
datepickerDialog_object.getDatePicker().setCalendarViewShown(false);
こんにちはこれを最も簡単な方法で試してください...
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>
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を渡すとうまくいきます。