您可能已经找到了解决此问题的答案,但我一直在寻找如何解决此问题,仍然不能完全找到我要找的内容,所以我想在这里发布它。
我所做的是以下内容(这是非常概括的,目的是为了给您一个大致的思路,复制和粘贴所有代码将不起作用 O:D):
首先,将EditText和您程序中想要的任何其他视图包装在单个视图中。在我的情况下,我使用LinearLayout来包装所有内容。
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainLinearLayout">
<EditText
android:id="@+id/editText"/>
<ImageView
android:id="@+id/imageView"/>
<TextView
android:id="@+id/textView"/>
</LinearLayout>
然后在你的代码中,你需要为主LinearLayout设置一个Touch监听器。
final EditText searchEditText = (EditText) findViewById(R.id.editText);
mainLinearLayout.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(searchEditText.isFocused()){
if(event.getY() >= 72){
searchEditText.clearFocus();
InputMethodManager imm = (InputMethodManager) v.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
}
}
Toast.makeText(getBaseContext(), "Clicked", Toast.LENGTH_SHORT).show();
return false;
}
});
我希望这能帮助一些人。或者至少能帮助他们开始解决问题。