0

Как я могу горизонтально центрировать ошибку TextInputLayout?Показать текстInputLayout error в центре по горизонтали

Я столкнулся с сообщением SO, которое предлагает использовать отражение, чтобы получить ссылку на текст ошибки. Я бы хотел избежать использования рефлексии.

Каким образом я могу это сделать?

+0

Вы нашли решение? –

ответ

0

Вы создаете собственный класс, который наследуется от TextInputLayout. Затем переопределите метод ShowError (текстовый текст, способ рисования). Если ошибка вызывается, вы центрируете textView с ошибкой.

public class TextInputLayout_Center : TextInputLayout 
{ 
    public override void ShowError(string text, Android.Graphics.Drawables.Drawable icon) 
    { 
     base.ShowError(text, icon); 

     centerErrorMessage(this); 
    } 

    void centerErrorMessage(ViewGroup view) 
    { 
     for (int i = 0; i < view.ChildCount; i++) 
     { 
      View v = view.GetChildAt(i); 
      if (v.GetType() == typeof(TextView)) 
      { 
       v.LayoutParameters = new LayoutParams(ViewGroup.LayoutParams.MatchParent, v.LayoutParameters.Height); 
       ((TextView)v).Gravity = GravityFlags.CenterHorizontal; 
       ((TextView)v).TextAlignment = TextAlignment.Center; 
      } 
      if (v is ViewGroup) 
      { 
       centerErrorMessage((ViewGroup)v); 
      } 
     } 
    } 
} 
Смежные вопросы