timepicker dialog, switch button und date picker stylen

  • 0 Antworten
  • Letztes Antwortdatum
S

SpecialFighter108

App-Anbieter (In-App)
4
hallo alle zusammen,

ich kämpfe schon seit langer Zeit daran, die o.g. Elemente zu stylen (farblich anzupassen).
Fangen wir mit dem Switch Button an:

Vorweg: Einige Screenshots sind unscharf, bitte davon nicht irritieren lassen - sieht in Original besser aus.
So sieht er bei mir von SDK 15 - 20 aus:
swbutton.png

Allerdings alles > SDK 20
swButton21.png

Woran liegt das ?

Außerdem habe ich es geschafft, die divider eines datepickers zu färben:

dp.png

Allerdings auch nur bis SDK 20
Das habe ich mit folgendem Code realisiert:

Code:
// DatePicker Set Divider Color
private void preparePicker() {
    try {
        Field datePickerFields[] = dP.getClass().getDeclaredFields();
        for (Field field : datePickerFields) {
            if ("mSpinners".equals(field.getName())) {
                field.setAccessible(true);
                Object spinnersObj = field.get(dP);
                LinearLayout mSpinners = (LinearLayout) spinnersObj;
                NumberPicker monthPicker = (NumberPicker) mSpinners.getChildAt(0);
                NumberPicker dayPicker = (NumberPicker) mSpinners.getChildAt(1);
                NumberPicker yearPicker = (NumberPicker) mSpinners.getChildAt(2);
                setDividerColor(monthPicker);
                setDividerColor(dayPicker);
                setDividerColor(yearPicker);
                break;
            }
        }
    } catch (Exception ex) {
        Log.e("-->", "Unable to change date dialog");
    }
}

private void setDividerColor(NumberPicker picker) {
    Field[] numberPickerFields = NumberPicker.class.getDeclaredFields();
    for (Field field : numberPickerFields) {
        if (field.getName().equals("mSelectionDivider")) {
            field.setAccessible(true);
            try {
                field.set(picker, getResources().getDrawable(R.drawable.picker_divider));
            } catch (IllegalArgumentException e) {
                Log.e("-->", "Illegal Argument Exception");
                e.printStackTrace();
            } catch (Resources.NotFoundException e) {
                Log.e("-->", "Resources NotFound");
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                Log.e("-->", "Illegal Access Exception");
                e.printStackTrace();
            }
        }
    }
}

Ne Idee warum das ab SDK 20 aufwärts nicht mehr geht?
Bzw. hat jemand ne bessere Lösung?


Und zum Schluss.
Für meinen TimePicker Dialog habe ich bislang noch überhaupt keinen Weg gefunden:
tpdialog.png
 
Zurück
Oben Unten