【问题标题】:What is difference between hint in TextInputLayout vs hint in TextInputEditTextTextInputLayout 中的提示与 TextInputEditText 中的提示有什么区别
【发布时间】:2019-05-30 02:39:37
【问题描述】:

我在“NullPointerException: Attempt to invoke virtual method 'void android.view.View.getBoundsOnScreen(android.graphics.Rect)' on a null object reference”的崩溃日志中发现了崩溃,并且我验证了有关此崩溃的一些 stackoverflow 建议。我发现下面的链接建议在 TextInputLayout 中使用提示而不是 TextInputEditText,所以我想知道它有什么不同?

以下链接建议在 TextInputLayout 中使用提示: SO 谷歌显示在 TextInputEditText 中使用提示: Google_Recommendation

我在 TextInputLayout 和 TextInputEditText 的位置都尝试了提示。提示在这两个地方都同样有效。

我想知道这两种方法有什么区别,哪一种更适合使用。

【问题讨论】:

    标签: android android-textinputlayout android-textinputedittext


    【解决方案1】:

    在设计支持库中引入了 TextInputLayout 以在 EditTextTextInputEditText 上显示浮动标签。 EditTextTextInputEditText 必须用 TextInputLayout 包裹才能显示浮动标签。

    经验法则TextInputLayout 应该包含 TextInputEditText

    你应该在哪里放置提示

    据官方documentation

    提示应设置在 TextInputLayout,而不是 EditText。如果在 XML 中对子 EditText 指定了提示,则 TextInputLayout 可能仍然可以正常工作; TextInputLayout 将使用 EditText 的 提示作为其浮动标签。但是,将来修改提示的调用不会更新 TextInputLayout 的 提示。为避免意外行为,请在 TextInputLayout 上而不是 EditText 上调用 setHint(CharSequence) 和 getHint()。

    注意TextInputEditTextEditText 的特殊子类,设计用作TextInputLayout 的子类。

    希望对你有帮助

    【讨论】:

    • 感谢您的回复。如果我在 TextInputLayout 中有 TextInputEditText 怎么办?
    • 它就像你有 EditText,因为 textInputEdittext 是编辑文本的子类,所以你在 TextInputEdittext 上应用相同的规则
    • 我注意到如果我使用 android studio 布局编辑器放入 TextInputLayout 元素,它会将提示放在嵌套的 TextInputEditText 中。是编辑做错了还是放置正确?
    【解决方案2】:

    因为我还不能评论,所以回答。

    就我而言,我只收到了您提到的来自华为设备的崩溃。 一旦我将所有提示移至应用程序中的 TextInputLayouts,所有崩溃都停止了。

    我的理解是华为构建的android版本缺少null检查导致崩溃。

    我现在总是将提示放在 TextInputLayout 上。

    【讨论】:

      猜你喜欢
      • 2017-04-18
      • 2018-03-15
      • 2016-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多