0

Ich wollte Number Picker Auswahlteiler anpassen.NumberPicker Material Style Benutzerdefinierte Auswahl Divider

number picker selection divider

I benutzerdefinierten drawable geschaffen für Number Picker Auswahl Teiler verwendet werden.

Ich erstellte benutzerdefinierte Material Stil erbende Zahl Picker Material Stil.

<style name="MyNumberPickerTheme" parent="@android:style/Widget.Material.NumberPicker"> 
    <item name="colorControlNormal ">#2e7d32</item> 
    <item name="android:background">#69f0ae</item> 
    <item name="selectionDivider">@drawable/my_number_picker_divider</item> 
</style> 

Aber selectionDivider-Eigenschaft wird nicht erkannt. Wie kann ich mein benutzerdefiniertes Zeichenformat dem Zahlenauswahl-Materialformat hinzufügen, um einen benutzerdefinierten Auswahlteiler zu erstellen?

+0

überprüfen Sie diese https://stackoverflow.com/questions/20148671/android-how-to-change-the-color-of-the-datepicker-divider/20291416#20291416. – Raghunandan

+0

Das ist nicht nützlich. Es ist nicht die Farbe des Auswahlteilers, den ich ändern möchte. Ich habe ein Zeichen erstellt, das als Auswahlteiler für den Zahlenwähler verwendet werden kann. Aber kann es nicht zum Nummernwähler als Auswahl zuweisenDivider Eigenschaft wird nicht erkannt, Kompilierungsfehler, sogar Android: selectionDivider das gleiche Problem. –

+0

können Sie ein Zeichen setzen, das ich nicht versucht habe. aber der gepostete Link hat eine Antwort, die Reflexion verwendet und eine Bibliothek wird ebenfalls vorgeschlagen. werfen Sie einen Blick auf die Antwort ändern Sie es entsprechend – Raghunandan

Antwort

0

Es scheint als gäbe es keinen einfachen Weg, dies zu erreichen. This StackOverflow solution ist die einzige gut genug Lösung in diesem Fall. Um der anderen Leser willen werde ich die Antwort hier kopieren/einfügen.

private void setDividerColor(NumberPicker picker, Drawable customDrawable) { 

    java.lang.reflect.Field[] pickerFields = NumberPicker.class.getDeclaredFields(); 
    for (java.lang.reflect.Field pf : pickerFields) { 
     if (pf.getName().equals("mSelectionDivider")) { 
      pf.setAccessible(true); 
      try { 
       pf.set(picker, customDrawable); 
      } catch (IllegalArgumentException e) { 
       e.printStackTrace(); 
      } catch (Resources.NotFoundException e) { 
       e.printStackTrace(); 
      } 
      catch (IllegalAccessException e) { 
       e.printStackTrace(); 
      } 
      break; 
     } 
    } 
} 

Und jetzt irgendwo in Ihrem Code können Sie setDividerColor (Picker, drawableObject) setzen die Farbe des Teilers nennen.

+0

Ich versuche nicht, die Farbe der Auswahlteiler zu ändern. Ich möchte benutzerdefinierte Zeichenform (andere Form) als Auswahlteiler verwenden. –

+0

Ich habe die Antwort auf die Unterstützung von Zeichen aktualisiert. –