我使用listview
进行自定义editText
并在点击edittext
时编辑edittext
数据,并显示键盘正常工作。
我的问题是当我在edittext
外面点击时,键盘必须隐藏。
感谢...
答案 0 :(得分:5)
为此,您必须在布局文件的父布局上使用onTouchListener。在TouchListener上,您必须编码以在EditText外部单击时隐藏键盘。请按照XML Layout和Java类解决此问题,请遵循以下URL。
http://amitthaperandroidquery.blogspot.com/2011/10/remove-keyboard-after-click-outside.html
答案 1 :(得分:2)
一种方法是可以将焦点更改侦听器设置为EditText。 当小部件失去焦点时,您可以通过以下方式隐藏Keyborad: -
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);
答案 2 :(得分:0)
您可以通过执行以下步骤来实现此目的:
通过添加以下属性,使父视图(活动的内容视图)可单击并可聚焦
android:clickable="true"
android:focusableInTouchMode="true"
实现hideKeyboard()方法
public void hideKeyboard(View view) {
InputMethodManager inputMethodManager =(InputMethodManager)getSystemService(Activity.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
最后,设置edittext的onFocusChangeListener。
edittext.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (!hasFocus) {
hideKeyboard(v);
}
}
});
答案 3 :(得分:0)
与接受的答案类似的另一种方法是继承布局的根视图并重写OnInterceptTouchEvent,隐藏键盘并返回false以允许触摸像往常一样传播。
以下示例适用于Xamarin,但很容易移植到Java:
public class KeyboardHidingScrollView : ScrollView
{
public KeyboardHidingScrollView (Context context) : base (context)
{
}
public KeyboardHidingScrollView (Context context, IAttributeSet attrs) : base (context, attrs)
{
}
public override bool OnInterceptTouchEvent (Android.Views.MotionEvent ev)
{
var methodManager = (InputMethodManager)Context.GetSystemService (Context.InputMethodService);
methodManager.HideSoftInputFromWindow (WindowToken, HideSoftInputFlags.None);
return false;
}
}