TextInputLayout中的提示与TextInputEditText中的提示之间有什么区别

时间:2019-05-30 02:39:37

标签: android android-textinputlayout android-textinputedittext

我在崩溃日志中发现“ NullPointerException:尝试在空对象引用上调用虚拟方法'void android.view.View.getBoundsOnScreen(android.graphics.Rect)'”的崩溃,并且验证了此崩溃的一些stackoverflow建议。我发现以下链接建议在TextInputLayout中使用提示而不是TextInputEditText,所以我想知道是什么使它与众不同?

下面的链接建议在TextInputLayout中使用提示: SO Google展示了在TextInputEditText中使用提示: Google_Recommendation

我尝试在TextInputLayout和TextInputEditText处都提示。提示在两个地方的效果都差不多。

我想知道两种方法之间的区别以及哪种方法更合适。

2 个答案:

答案 0 :(得分:2)

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

经验法则TextInputLayout应该包裹TextInputEditText

您应该在哪里放置提示

根据官方documentation

  

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

请注意TextInputEditTextEditText的特殊子类,旨在用作TextInputLayout的子代。

希望有帮助

答案 1 :(得分:-1)

正在回答,我还不能发表评论。

就我而言,我只是从华为设备收到您提到的崩溃。 将所有提示移至应用程序中的TextInputLayouts后,所有崩溃均已停止。

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

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