Android में EditText के बाहर टच पर सॉफ्ट कीबोर्ड छुपाना
यह उदाहरण दर्शाता है कि जब उपयोगकर्ता EditText के बाहर कहीं टैप करता है, तो सॉफ्ट कीबोर्ड को प्रोग्रामेटिकली कैसे छुपाया जाए।
चरण 1: नया प्रोजेक्ट बनाएं
Android Studio में File → New Project चुनें।
चरण 2: लेआउट फ़ाइल (res/layout/activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp"
android:id="@+id/rootLayout"
tools:context="MainActivity">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:hint="यहां टेक्स्ट दिखाई देगा"
android:textSize="20sp" />
<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:hint="टेक्स्ट दर्ज करें"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="16dp"
android:onClick="setText"
android:text="टेक्स्ट सेट करें"
android:textStyle="bold"/>
</LinearLayout>
चरण 3: MainActivity (src/MainActivity.java)
import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private EditText editText;
private TextView textView;
private View rootLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = findViewById(R.id.editText);
textView = findViewById(R.id.textView);
rootLayout = findViewById(R.id.rootLayout);
// रूट लेआउट पर टच लिसनर सेट करें
rootLayout.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// केवल ACTION_DOWN पर कीबोर्ड छुपाएं
if (event.getAction() == MotionEvent.ACTION_DOWN) {
hideKeyboard();
}
// false लौटाएं ताकि इवेंट आगे प्रोपेगेट हो सके
return false;
}
});
}
// बटन क्लिक हैंडलर (XML में android:onClick से जुड़ा)
public void setText(View view) {
String newText = editText.getText().toString();
textView.setText(newText);
hideKeyboard();
}
// कीबोर्ड छुपाने का हेल्पर मेथड
private void hideKeyboard() {
View currentFocus = getCurrentFocus();
if (currentFocus != null) {
InputMethodManager imm = (InputMethodManager)
getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(currentFocus.getWindowToken(), 0);
}
}
}
वैकल्पिक: EditText के लिए OnFocusChangeListener
editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (!hasFocus) {
hideKeyboard();
}
}
});
मुख्य क्लास और मेथड
- InputMethodManager: इनपुट मेथड (कीबोर्ड) मैनेज करने के लिए सिस्टम सर्विस
- hideSoftInputFromWindow(): विंडो टोकन से कीबोर्ड छुपाता है
- getCurrentFocus(): वर्तमान में फोकस्ड व्यू लौटाता है
- getWindowToken(): विंडो का यूनिक टोकन लौटाता है
चरण 4: AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
package="app.com.sample">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
ऐप चलाएं
ऐप लॉन्च करें, EditText पर टैप करके कीबोर्ड खोलें, फिर खाली क्षेत्र या बटन पर टैप करके कीबोर्ड छुपते देखें।

