Changer TextInputLayout accent de couleur par programme

J'ai un TextInputLayout simple contenant une vue EditText.

Maintenant, je me demande comment changer la couleur de l'accent (souligner, suggérerTextColor lorsqu'il est mis en surbrillance) par programme. Je ne peux pas trouver une méthode appropriée dans TextInputLayout.

  • Suppression de la notification après le clic
  • Ajuster la largeur à la demi-écran
  • Ajout d'un arrière-plan coloré avec le texte / l'icône sous la ligne de balayage lors de l'utilisation de RecyclerView d'Android
  • La vision de l'image Android modifie la teinte pour simuler le clic du bouton
  • Appcompat manquant dans le dossier sdk
  • React Native - initialProperties Android
  • Aucune suggestion? Merci d'avance.

  • Comment utiliser les éléments de la barre d'action avec Viewpager + Fragments
  • Création d'animation pour les images de petites à grandes lorsque vous faites défiler verticalement
  • Obtenir l'adresse IP de la passerelle dans Android
  • Gonfler des fragments avec un package de compatibilité Android
  • Android SurfaceView provoquant un scintillement d'écran
  • Comment construire une forme trapézoïdale dans Android?
  • 2 Solutions collect form web for “Changer TextInputLayout accent de couleur par programme”

    IMHO InputTextLayout ne peut pas changer la couleur de l'étiquette par programme, car elle est définie par style. J'ai examiné le code source de InputTextLayout et j'ai écrit cette méthode de piratage qui crée un accès à un membre de couleur privé:

    public static void setInputTextLayoutColor(EditText editText, @ColorInt int color) { TextInputLayout til = (TextInputLayout) editText.getParent(); try { Field fDefaultTextColor = TextInputLayout.class.getDeclaredField("mDefaultTextColor"); fDefaultTextColor.setAccessible(true); fDefaultTextColor.set(til, new ColorStateList(new int[][]{{0}}, new int[]{ color })); Field fFocusedTextColor = TextInputLayout.class.getDeclaredField("mFocusedTextColor"); fFocusedTextColor.setAccessible(true); fFocusedTextColor.set(til, new ColorStateList(new int[][]{{0}}, new int[]{ color })); } catch (Exception e) { e.printStackTrace(); } } 

    MFocusedTextColor est utilisé pour le montage interne CollapsingTextHelper.mCollapsedTextColor qui définit la couleur de l'étiquette.

    Vous pouvez essayer cela pour le texte,

     InputTextLayout.getEditText().setHighlightColor(yourColor); InputTextLayout.getEditText().setHintTextColor(yourColor); 

    Et ceci pour la ligne au bas du EditText

     Drawable background = InputTextLayout.getEditText().getBackground(); DrawableCompat.setTint(background, yourColor); InputTextLayout.getEditText().setBackground(background); 

    Esperons que ça marche!

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.