0

Je voulais personnaliser le diviseur de sélection du sélecteur de numéros.NumberPicker Matériau Style Séparateur de sélection personnalisé

number picker selection divider

J'ai créé drawable personnalisé à utiliser pour diviseur de sélection de sélecteur de nombre.

J'ai créé un style de matériau personnalisé héritant du style de matériau de sélecteur de nombres.

<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> 

Mais la propriété selectionDivider n'est pas reconnue. Comment puis-je ajouter mon drawable personnalisé au style de matériau du sélecteur de nombre pour définir un séparateur de sélection personnalisé?

+0

vérifiez ce https://stackoverflow.com/questions/20148671/android-how-change-the-color-of-the-datepicker-divider/20291416#20291416. – Raghunandan

+0

Ce n'est pas utile. Ce n'est pas la couleur du diviseur de sélection que je veux changer. J'ai créé un drawable à utiliser comme séparateur de sélection du sélecteur de nombres. Mais ne peut pas l'assigner au sélecteur de nombre que la propriété de selectionDivider n'est pas reconnue en obtenant l'erreur de compilation, même android: selectionDivider le même problème. –

+0

vous pouvez définir un drawable je n'ai pas essayé. mais le lien posté a une réponse qui utilise la réflexion et une bibliothèque est également suggérée. jetez un oeil à la réponse modifier en conséquence – Raghunandan

Répondre

0

Il semble qu'il n'y ait pas de moyen facile d'y parvenir. This StackOverflow solution est la seule solution assez bonne dans ce cas. Par souci d'autres lecteurs, je vais copier/coller la réponse ici.

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; 
     } 
    } 
} 

Et maintenant quelque part dans votre code, vous pouvez appeler setDividerColor (sélecteur, drawableObject) pour définir la couleur du diviseur.

+0

Je ne cherche pas à changer la couleur du diviseur de sélection. Je veux utiliser dessinable personnalisable (forme différente) comme diviseur de sélection. –

+0

J'ai mis à jour la réponse au support drawable. –