Android 如何将浮动标签文本重置为其';在文本输入布局外部单击时的原始位置

Android 如何将浮动标签文本重置为其';在文本输入布局外部单击时的原始位置,android,android-layout,material-design,android-support-library,androiddesignsupport,Android,Android Layout,Material Design,Android Support Library,Androiddesignsupport,您好,我正在使用浮动文本视图进行布局。当我点击编辑文本,不输入任何内容或删除编辑文本中的所有内容,然后点击视图外部时,我的浮动标签仍然保持在提升位置。我想重置它的位置,因为它是以前有提示显示和没有文本插入。那么如何做到这一点呢?提前谢谢。 我正在使用支持设计库来显示浮动标签 下面是浮动标签的教程 您可以在活动中添加一些代码,使编辑文本在外部单击后失去焦点。 以下是一个例子: public static void setupForKeyboardDismiss(View view, final A

您好,我正在使用浮动文本视图进行布局。当我点击编辑文本,不输入任何内容或删除编辑文本中的所有内容,然后点击视图外部时,我的浮动标签仍然保持在提升位置。我想重置它的位置,因为它是以前有提示显示和没有文本插入。那么如何做到这一点呢?提前谢谢。

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

下面是浮动标签的教程


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

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

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

谢谢@whd.nsr。这真的很有帮助。我使用editText.clearFocus()清除了编辑文本的焦点;setupforkeyboarddismise()方法中的方法。很高兴它很有用:)@whd.nsr的答案非常有用。我还发现了另一种通过使用extextchanged()方法清除焦点来使用文本观察程序实现这一点的方法。我发现它唯一的缺点是,如果我们先单击edittext,然后什么也不输入,它就无法触发侦听器。
setupForKeyboardDismiss((ViewGroup) activity.findViewById(android.R.id.content), activity);