当前位置: 首页 > 知识库问答 >
问题:

TextInputLayout错误消息大小

韦原
2023-03-14

是否有一种方法可以强制TextInputLayout错误消息使用一行?

我尝试将app:errorTextPapearance=“@style/error_apperation”放置在TextInputLayout上,其error_apperation样式包含:

<item name="android:maxLines">1</item>
<item name="android:ellipsize">end</item>
<item name="android:inputType">text</item>

但它不起作用。然而,改变颜色是有效的。我不明白,mErrorView只是一个文本视图,它应该可以工作。

共有1个答案

松嘉颖
2023-03-14

错误是TextView,但是TextExperience样式只影响文本,而不影响文本所在的视图maxlinesellipsize属性属于textview,因此在textappine样式中会忽略它们,该样式需要textcolortextsizetypeface等属性。1

了解了这一点,我们只需要找到一种方法,在errortextview上设置这些属性的值。对于当前版本的TextInputLayout.2,Kjurkovic对这个问题的回答展示了如何在代码中实现这一点。

这个错误TextView是用TextInputLayout上下文实例化的,我们实际上可以在布局XML中用Android:theme属性在某种程度上修改它。使用此属性的覆盖,我们可以使context的主题具有Android:TextViewStyle-本质上是TextViews的基本设置-其中包含我们所需的属性值。

在主题/样式资源XML中:

<style name="ThemeOverlay.TextInputLayout.TextView" parent="">
    <item name="android:textViewStyle">@style/Widget.TextView.SingleLineEllipsized</item>
</style>

<style name="Widget.TextView.SingleLineEllipsized" parent="">
    <item name="android:maxLines">1</item>
    <item name="android:ellipsize">end</item>
</style>

在布局XML的 上,只需添加Android:theme属性:

<com.google.android.material.textfield.TextInputLayout
    android:id="@+id/text_input_layout_phone"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="Phone number"
    android:theme="@style/ThemeOverlay.TextInputLayout.TextView">

    <com.google.android.material.textfield.TextInputEditText
        android:id="@+id/edit_text_phone"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</com.google.android.material.textfield.TextInputLayout>

尽管当前的TextInputLayout与原始的设计细节不同,但我们可以看到MaxLinesEllipSize设置已经起作用:

    null

如果其中任何一个是不需要的,那么Kjurkovic的findviewbyid()演示应该使用所有这些textview3,尽管您必须确保首先设置相应的文本,因为textview是按需实例化的。

1您可以在平台的res/values/attrs.xml资源文件中找到有效的TextExperience属性的完整列表。我不相信有任何文档或开发人员页面涵盖它;至少以前没有。

2TextInputLayout的第一个版本没有为内部TextView分配ID,因此直接引用错误TextView需要反射,或者笨拙地搜索内部层次结构。我没有在这些古老版本上测试过主题覆盖解决方案,但如果出于任何原因,您坚持使用主题覆盖解决方案,而这不起作用,此答案的以前修订版本为您提供了其他选项。

3顺便提一下,所有这些代码的ID如下:r.id.textinput_errorr.id.textinput_helper_textr.id.textinput_counterr.id.textinput_prefix_textr.id.textinput_suffix_text.

 类似资料:
  • 它通常表现为红色,我想改变它。我应该在文件中使用哪些项名/键来确定颜色目标? 提前谢了。 编辑: 当出现错误消息时,字段上方的提示将变为与错误消息相同的颜色,覆盖提示颜色--这是经过设计的。

  • 在本章中,我们将讨论在使用SLF4J时获得的各种错误消息或警告以及这些消息的原因/含义。 无法加载类“org.slf4j.impl.StaticLoggerBinder”。 这是在类路径中没有提供SLF4J绑定时引起的警告。 以下是完整的警告 - 要解决此问题,需要添加任一日志框架绑定。本教程上一小节对此进行了解释说明。 注 - 这种情况发生在SLF4J的版本中,介于1.6.0和1.8.0-bet

  • 问题内容: 这是我的代码片段: 这应该给我一个错误,因为这些表甚至不存在。但是我得到的是: 数组([0] => 00000) 如何获得对该错误的更好描述,以便可以调试问题? 问题答案: 尝试以下方法: 在准备之前添加以下内容: 这将更改PDO错误报告类型,并在出现PDO错误时使其发出警告。尽管应该设置您的errorInfo,但它应该可以帮助您进行跟踪。

  • 我正在使用Eclipse将json隐藏到Java中的字符串中。但我一直收到: 有人能告诉我json有什么问题吗?我如何改变它使其有效?我对java和json相当陌生,如果我错过了任何应该包括的细节,我很抱歉。

  • 我有一个EditText包含在TextInputLayout中。我希望在EditText下显示错误,但要对齐到屏幕的右端。 我的XML是: 我在使用数据绑定。

  • 这个问题已经问了好几次了,我跟着这些问题试图解决这个问题。该项目成功构建并运行了几个小时前我关闭了电脑。这个问题让我抓狂,请帮助。 留言: build.gradle: 请帮忙。