9

当我预填充 EditText 字段时,我希望能够使浮动标签就位。当视图加载时,提示仍然显示在文本后面,然后再动画到浮动标签。支持库的 TextInputLayout 中似乎没有这种方法。有什么想法吗?

4

3 回答 3

9

使用支持设计库v23,您可以使用:

til.setHintAnimationEnabled(false);

在这里您可以找到javadoc

于 2015-08-20T21:50:58.103 回答
3

基于 Gabriels 的回答,我编写了一个在加载视图层次结构后运行的小方法,该方法在初始显示时禁用动画,但在之后启用它。将此添加到您的基本活动/片段/视图中,它将解决它的问题。

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);
            }
        }
    }
于 2018-03-01T01:43:45.240 回答
0

我使用下面的代码得到了解决方案,我尝试使用 xml 但工作时间不长,您可以尝试以编程方式将提示设置为TextInputLayoutTextInputEditText

    TextInputLayout hintView = (TextInputLayout) findViewById(R.id.activity_login_inputlayout_password);
    hintView.setHintAnimationEnabled(false);
    hintView.setHint("");
    yourEditTextPassword.setHint(getString(R.string.text_password_hint));
于 2018-06-16T06:52:44.707 回答