webentwicklung-frage-antwort-db.com.de

So ändern Sie den Datepicker-Stil für Android

Ich mache derzeit ein Anmeldeformular und eines der Felder ist für das Geburtsdatum des Benutzers. Ich möchte datepicker verwenden, möchte jedoch nicht das Kalenderlayout wie unten gezeigt: 

 enter image description here

Ich möchte, dass das Layout in etwa so aussieht, so dass es einfacher ist, Jahr und Monat auszuwählen, ohne durch alles blättern zu müssen:

 enter image description here

Ich weiß jedoch nicht, wie ich damit umgehen soll oder was ich in die Datei styles.xml schreiben sollte. Jede Hilfe wäre sehr dankbar.

5

Fügen Sie dies zu style.xml hinzu

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

Und dann sollten Sie den Stil für Ihre Datumsauswahl wie folgt anwenden:

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

Gestalten Sie mit

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

Dann im benutzerdefinierten Fragmentdialogfeld 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" />

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

2
yogikalwar

Um den DatePicker-Stil global festzulegen, fügen Sie Folgendes zu style.xml hinzu oder passen Sie den vorhandenen Inhalt an:

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

Definieren Sie Ihren benutzerdefinierten DatePicker-Stil entweder in style.xml oder in einer separaten Datei, z.

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

Die obigen Eigenschaften beziehen sich auf XML. Wenn Sie es programmgesteuert festlegen möchten, können Sie den folgenden Code eingeben, aber ich habe diesen Code nicht überprüft, ob er funktioniert oder nicht. 

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

DatePickerDialog bietet eine praktische Methode, mit der Sie das gewünschte Layout festlegen können.

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;

Das Übergeben von 1 oder 2 in themesResId führt den Trick aus.