在文本输入布局之外单击时如何将浮动标签文本重置为其原始位置 android

How to reset floating label text to its' original position when clicked outside of Text Input Layout android

您好,我正在使用 浮动文本视图 作为我的布局。当我单击编辑文本并且不输入任何内容或删除编辑文本内的所有内容然后单击该视图外部时,我的浮动标签仍保持在升高的位置。我想重置它的位置,因为它有提示显示并且没有插入文本。那么如何实现呢?提前致谢。

我正在使用支持设计库来显示浮动标签。

我正在学习 this 浮动标签教程。

您可以在 activity 中添加一些代码,使编辑文本在单击外部文本后失去焦点。 这是一个例子:

public static void setupForKeyboardDismiss(View view, final Activity activity) {

        //Set up touch listener for non-text box views to hide keyboard.
        if(!(view instanceof EditText)) {

            view.setOnTouchListener(new View.OnTouchListener() {

                public boolean onTouch(View v, MotionEvent event) {
                    hideSoftKeyboard(activity);
                    return false;
                }

            });
        }

        //If a layout container, iterate over children and seed recursion.
        if (view instanceof ViewGroup) {

            for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++) {

                View innerView = ((ViewGroup) view).getChildAt(i);

                setupForKeyboardDismiss(innerView, activity);
            }
        }
    }
    public static void hideSoftKeyboard(Activity activity) {
        try {
            InputMethodManager inputMethodManager = (InputMethodManager)  activity.getSystemService(Activity.INPUT_METHOD_SERVICE);
            inputMethodManager.hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(), 0);
        }catch (Exception e){
            e.printStackTrace();
        }
    }

然后你可以调用 setupForKeyboardDismiss 方法传递任何包含这些编辑文本的视图,实际上你可以通过调用这个(在你的 activity 的 setContentView 之后)将它应用于所有 activity ):

setupForKeyboardDismiss((ViewGroup) activity.findViewById(android.R.id.content), activity);

这是因为您的编辑文本仍然具有焦点。您可以在单击外部或其他视图时调用 editText.clearFocus()