如何禁用TextInputLayout中EditText字段填充时的浮动标签动画?

9

当我预填EditText字段时,希望浮动标签已经就位。当视图加载时,在文本后面动画化浮动标签之前,仍然显示提示。在Support Library的TextInputLayout中似乎没有这个方法。您有什么想法吗?

3个回答

9

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

til.setHintAnimationEnabled(false);

Here you can find the javadoc.


2
注意,我们在设置文本/提示之前需要关闭动画。如果顺序错误,动画将无法关闭。 - Elye
工作中。确保在您的“TextInputEditText”上调用方法,而不是“TextINputLayout”上。 在设置字段后播放动画,然后再次启用动画。:-(( - Sevastyan Savanyuk
1
@Sevastyan,在字段被清除之前,你实际上不需要动画。添加一个文本更改监听器,在字段字符计数达到0时重新启用动画。 - Rene Juuse

3

根据Gabriels的答案,我编写了一个小方法,在加载视图层次结构后运行它可以在初始显示时禁用动画,但在此后启用动画。将此代码添加到您的基本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);
            }
        }
    }

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));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接