Anda mungkin sudah menemukan jawaban untuk masalah ini, tetapi saya telah mencari cara untuk menyelesaikannya dan masih tidak dapat benar-benar menemukan apa yang saya cari, jadi saya pikir saya akan mempostingnya di sini.
Apa yang saya lakukan adalah sebagai berikut (ini sangat umum, tujuannya adalah memberi Anda gambaran tentang bagaimana melanjutkan, menyalin dan menempel semua kode tidak akan berfungsi O: D):
Pertama memiliki EditText dan tampilan lain yang Anda inginkan dalam program Anda dibungkus oleh satu tampilan. Dalam kasus saya, saya menggunakan LinearLayout untuk membungkus semuanya.
<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>
Kemudian dalam kode Anda, Anda harus menyetel Touch Listener ke LinearLayout utama Anda.
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;
}
});
Saya harap ini membantu beberapa orang. Atau setidaknya membantu mereka mulai memecahkan masalah mereka.