Android焦点更改侦听器无法正常工作

时间:2015-06-19 09:00:16

标签: android animation listener setfocus

我正在开发Android应用,我正在尝试实现我在网上找到的功能。我想要做的就是当用户点击编辑文本时,例如,如果用户点击“用户名”编辑文本,setOnFocusChangeListener将检查事物并将标签的动画开始为fadeIn和fadeOut,这里是我的代码

userSignupPasswordET.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if (userSignupPasswordET.hasFocus()) {
                    signupPassWDTV.startAnimation(fadeIn);
                } else {
                    if (userSignupPasswordET.getText().toString().length() == 0) {
                        signupPassWDTV.startAnimation(fadeOut);
                    }
                }
            }
        });

我想要做的功能就在youtube上。但我面临的问题是我有三个字段,用户名,密码和电子邮件。因此,如果我点击用户名它正在工作,fadIn动画用于用户名标签工作,如果我不输入任何fadeOut动画工作,当我移动到其他编辑文本和其他编辑文本自己的setOnFocusChangeListener工作。但问题是如果我不在任何一个中输入任何东西只是继续切换它们,不断改变它们的焦点,另外两个编辑文本的setOnFocusChangeListener被触发并启动fadeIn动画和fadeOut动画。所以我不知道该怎么办。有什么建议吗?请记住,如果我没有在编辑字段中输入任何内容并且只是不断更改/切换它们,则会触发此问题。如果我在一个中输入内容,它就会改变并且标签保持可见。

1 个答案:

答案 0 :(得分:0)

您可以在TextChangedListener()

上添加逻辑
edittext.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence arg0, int arg1, int arg2,
                int arg3) {

        }

        @Override
        public void beforeTextChanged(CharSequence arg0, int arg1,
                int arg2, int arg3) {
        }

        @Override
        public void afterTextChanged(Editable et) {

        }
    });

这样只有在edittext上输入内容时才会调用动画