在水平居中显示TextInputLayout错误

时间:2016-05-14 22:58:54

标签: android android-design-library android-textinputlayout

如何将TextInputLayout错误水平居中?

我遇到过一篇SO帖子,建议使用反射来引用错误textview。我想避免使用反射。

我有什么方法可以做到这一点?

1 个答案:

答案 0 :(得分:0)

您创建了一个继承自TextInputLayout的类。然后覆盖ShowError(字符串文本,Drawable图标)方法。如果调用错误,则将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);
            }
        }
    }
}