คุณอาจพบคำตอบสำหรับปัญหานี้แล้ว แต่ฉันกำลังมองหาวิธีแก้ปัญหานี้และยังไม่พบสิ่งที่ต้องการจริงๆดังนั้นฉันจึงคิดว่าจะโพสต์ไว้ที่นี่
สิ่งที่ฉันทำมีดังต่อไปนี้ (นี่เป็นเรื่องทั่วไปมากวัตถุประสงค์คือเพื่อให้คุณทราบวิธีดำเนินการคัดลอกและวางโค้ดทั้งหมดจะไม่ทำงาน 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>
จากนั้นในโค้ดของคุณคุณต้องตั้งค่า Touch Listener เป็น LinearLayout หลักของคุณ
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;
}
});
ฉันหวังว่านี่จะช่วยบางคนได้ หรืออย่างน้อยก็ช่วยให้พวกเขาเริ่มแก้ปัญหาได้