我知道,驳回机器人tyhe键盘代码隐藏键盘
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);
任何人都可以建议我隐藏键盘的方法,如果我们触摸文字以外的区域屏幕中键盘以外的区域。
我知道,驳回机器人tyhe键盘代码隐藏键盘
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);
任何人都可以建议我隐藏键盘的方法,如果我们触摸文字以外的区域屏幕中键盘以外的区域。
代码驳回Softkeyboard低于:
public static void hideSoftKeyboard(Activity activity) {
InputMethodManager inputMethodManager = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(), 0);
}
你可以把它放在工具类中,或者如果你在一个活动中定义它,避免活动参数,或者调用hideSoftKeyboard(这个)。
您可以编写一个方法遍历活动中的每个视图,并检查它是否为EditText的实例,如果它未向该组件注册setOnTouchListener并且所有内容都将落入适当位置。如果你想知道如何做到这一点,那实际上很简单。这就是你所做的,你写下如下的递归方法。
public void setupUI(View view) {
//Set up touch listener for non-text box views to hide keyboard.
if(!(view instanceof EditText)) {
view.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
hideSoftKeyboard();
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);
setupUI(innerView);
}
}
}
呼叫SetcontentView()
后,这种方法与PARAMET为您的看法一样的id
:
RelativeLayoutPanel android:id="@+id/parent"> ... </RelativeLayout>
然后调用setupUI(findViewById(R.id.parent))
尽你所能的方式使用是另外的EditText完成按钮让您onClickListener做这样,
done.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);
}
});
这可能是老了,但我通过implenting自定义类
得到了这个工作public class DismissKeyboardListener implements OnClickListener {
Activity mAct;
public DismissKeyboardListener(Activity act) {
this.mAct = act;
}
@Override
public void onClick(View v) {
if (v instanceof ViewGroup) {
hideSoftKeyboard(this.mAct);
}
}
}
public void hideSoftKeyboard(Activity activity) {
InputMethodManager imm = (InputMethodManager)
getSystemService(Activity.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0);
}
最好的p ractice是创建一个Helper类,每个容器的Relative/Linear Layouts都应该实现这个。
****采取注只有主容器应实现这个类(优化)****
,并实现它是这样的:
Parent.setOnClickListener(new DismissKeyboardListener(this));
关键字这是活动。所以如果你在片段上,你可以像getActivity()一样使用它;
---竖起大拇指,如果它可以帮助你... ---欢呼拉尔夫---
代码似乎很好。这将迫使键盘在所有情况下都隐藏起来。在某些情况下,您通过'InputMethodManager.HIDE_IMPLICIT_ONLY'作为第二个参数,以确保您只在用户没有明确强制显示时隐藏键盘(通过按住菜单) –
结帐我的答案http://stackoverflow.com/问题/ 4165414 /如何隐藏软键盘上的android-after-click-outside-edittext/36786783#36786783 – Uzair