Man*_*esh 54 android android-textinputlayout
我最近使用过TextInputLayout它的setError()方法.我得到的问题是,当我通过调用setError(null)它来清除错误时,会在底部留下如此多的空白空间.
正常:
有错误:
清除错误后:
在查看源代码后,我发现他们正在制作视图INVISIBLE而不是GONE
Run Code Online (Sandbox Code Playgroud).setListener(new ViewPropertyAnimatorListenerAdapter() { @Override public void onAnimationEnd(View view) { view.setVisibility(INVISIBLE); // here it is updateLabelVisibility(true); } }).start();
我想知道为什么会这样?如何解决这个问题以避免空白?
har*_*thk 123
查看文档
public void setErrorEnabled (boolean enabled)
Run Code Online (Sandbox Code Playgroud)
它说
是否在此布局中启用了错误功能.在通过setError(CharSequence)设置错误消息之前启用此功能将意味着在显示错误时此布局不会更改大小.
那么在此基础上,尝试设置setErrorEnabled(true)之前setError(),和设置setErrorEnabled(false)后setError(null).
不要使用setErrorEnabled(boolean),它只是没有显示第二次的错误。
public class MyTextInputLayout extends android.support.design.widget.TextInputLayout {
public MyTextInputLayout(Context context) {
super(context);
}
public MyTextInputLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyTextInputLayout(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
public void setError(@Nullable CharSequence error) {
super.setError(error);
View layout = getChildAt(1);
if (layout != null) {
if (error != null && !"".equals(error.toString().trim())) {
layout.setVisibility(VISIBLE);
} else {
layout.setVisibility(GONE);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后只是setError(errorMessage);或setError(null);
| 归档时间: |
|
| 查看次数: |
23551 次 |
| 最近记录: |