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