Muhtemelen bu sorunun cevabını zaten bulmuşsunuzdur, ancak bunu nasıl çözeceğime bakıyordum ve hala aradığımı tam olarak bulamıyorum, bu yüzden buraya koyacağımı düşündüm.
Yaptığım şey şuydu (bu çok genelleştirilmiş, amaç size nasıl devam edeceğiniz konusunda bir fikir vermektir, tüm kodu kopyalayıp yapıştırmak işe yaramayacaktır O: D):
Öncelikle, programınızda istediğiniz düzenleme metni ve diğer görünümleri tek bir görünümle sarın. Benim durumumda, her şeyi sarmak için bir LinearLayout kullandım.
<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>
Daha sonra kodunuzda, ana Doğrusal Yerleşiminize bir Dokunma Dinleyici ayarlamanız gerekir.
final EditText searchEditText = (EditText) findViewById(R.id.editText);
mainLinearLayout.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
if(searchEditText.isFocused()){
if(event.getY() >= 72){
//Will only enter this if the EditText already has focus
//And if a touch event happens outside of the EditText
//Which in my case is at the top of my layout
//and 72 pixels long
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;
}
});
Umarım bu bazı insanlara yardımcı olur. Ya da en azından problemlerini çözmeye başlamalarına yardımcı olur.