【问题标题】:TextInputLayout set error without message?TextInputLayout 设置错误没有消息?
【发布时间】:2021-03-16 21:57:49
【问题描述】:

是否可以在文本输入布局上设置错误而不显示任何错误消息(我已经在另一个地方这样做了)?

textinputlayout.setError("");

不幸的是,不会工作。

我基本上需要的是 textInputLayout 将其线条颜色更改为红色,但我需要以编程方式进行。谢谢

【问题讨论】:

标签: android android-textinputlayout


【解决方案1】:

您可以像这样隐藏带有错误的布局:

textinputlayout.setError("");
if (textinputlayout.getChildCount() == 2) {
    textinputlayout.getChildAt(1).setVisibility(View.GONE);
}

【讨论】:

  • 这可能随时被破坏。
  • 真的不安全
【解决方案2】:

希望还不算太晚,但setError 后面的代码是:

if (!mErrorEnabled) {
   if (TextUtils.isEmpty(error)) {
      // If error isn't enabled, and the error is empty, just return
      return;
   }
}

这意味着一个简单的解决方法是:

textinputlayout.setError(" ");

请注意,这将使带有错误消息的 TextView 可见 - 因此即使 TextInputLayout 为空也会使 TextInputLayout 更高

因为这通过了处理空错误消息请求的未经过深思熟虑的情况。

【讨论】:

  • 虽然我不认为这种情况没有经过深思熟虑,但它可能只是意味着 TextInputLayout 错误是为了占用空间并且这样做必须是非null 或非空 - 这个答案应该得到更多的支持,因为该解决方案更易于管理。
  • textinputlayout.setError(" ");这是最快的解决方案。谢谢。
【解决方案3】:

错误文本(甚至是“”)将在 TextInputLayout 中占据/保留一些高度。如果你也想摆脱它,那么

<com.google.android.material.textfield.TextInputLayout      
    ...
    app:errorTextAppearance="@style/MyZeroSizeTextAppearance"
    ...
    >

文字外观:

<style name="MyZeroSizeTextAppearance">
    <item name="android:textSize">0sp</item>
</style>

然后

textinputlayout.setError(" ");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多