如何在填充包含在 TextInputLayout 中的 EditText 字段时禁用浮动标签动画
How to disable floating label animation when populating EditText Fields wrapped in TextInputLayout
我希望在预填充 EditText 字段时能够让浮动标签就位。当视图加载时,提示仍然显示在文本后面,然后才动画到浮动标签。在支持库的 TextInputLayout 中似乎没有这种方法。有什么想法吗?
借助支持设计库 v23,您可以使用:
til.setHintAnimationEnabled(false);
在这里您可以找到javadoc。
基于 Gabriels 的回答 我在加载视图层次结构后为 运行 写了一个小方法,该方法在初始显示时禁用动画但在 wards 之后启用它。将此添加到您的基地 Activity/Fragment/View,它将解决问题。
private void setTextInputLayoutAnimation(View view) {
if (view instanceof TextInputLayout) {
TextInputLayout til = (TextInputLayout) view;
til.setHintAnimationEnabled(false);
til.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
@Override public boolean onPreDraw() {
til.getViewTreeObserver().removeOnPreDrawListener(this);
til.setHintAnimationEnabled(true);
return false;
}
});
return;
}
if (view instanceof ViewGroup) {
ViewGroup group = (ViewGroup) view;
for (int i = 0; i < group.getChildCount(); i++) {
View child = group.getChildAt(i);
setTextInputLayoutAnimation(child);
}
}
}
我使用下面的代码得到了解决方案,我尝试使用 xml 但没有工作更长的时间,您可以尝试以编程方式将提示设置为 TextInputLayout 和 TextInputEditText
TextInputLayout hintView = (TextInputLayout) findViewById(R.id.activity_login_inputlayout_password);
hintView.setHintAnimationEnabled(false);
hintView.setHint("");
yourEditTextPassword.setHint(getString(R.string.text_password_hint));
我希望在预填充 EditText 字段时能够让浮动标签就位。当视图加载时,提示仍然显示在文本后面,然后才动画到浮动标签。在支持库的 TextInputLayout 中似乎没有这种方法。有什么想法吗?
借助支持设计库 v23,您可以使用:
til.setHintAnimationEnabled(false);
在这里您可以找到javadoc。
基于 Gabriels 的回答 我在加载视图层次结构后为 运行 写了一个小方法,该方法在初始显示时禁用动画但在 wards 之后启用它。将此添加到您的基地 Activity/Fragment/View,它将解决问题。
private void setTextInputLayoutAnimation(View view) {
if (view instanceof TextInputLayout) {
TextInputLayout til = (TextInputLayout) view;
til.setHintAnimationEnabled(false);
til.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
@Override public boolean onPreDraw() {
til.getViewTreeObserver().removeOnPreDrawListener(this);
til.setHintAnimationEnabled(true);
return false;
}
});
return;
}
if (view instanceof ViewGroup) {
ViewGroup group = (ViewGroup) view;
for (int i = 0; i < group.getChildCount(); i++) {
View child = group.getChildAt(i);
setTextInputLayoutAnimation(child);
}
}
}
我使用下面的代码得到了解决方案,我尝试使用 xml 但没有工作更长的时间,您可以尝试以编程方式将提示设置为 TextInputLayout 和 TextInputEditText
TextInputLayout hintView = (TextInputLayout) findViewById(R.id.activity_login_inputlayout_password);
hintView.setHintAnimationEnabled(false);
hintView.setHint("");
yourEditTextPassword.setHint(getString(R.string.text_password_hint));