Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Android

Android में EditText के बाहर क्लिक करने पर सॉफ्ट कीबोर्ड कैसे छुपाएं?

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 पर टैप करके कीबोर्ड खोलें, फिर खाली क्षेत्र या बटन पर टैप करके कीबोर्ड छुपते देखें।

Android में EditText के बाहर क्लिक करने पर सॉफ्ट कीबोर्ड कैसे छुपाएं?

Android में EditText के बाहर क्लिक करने पर सॉफ्ट कीबोर्ड कैसे छुपाएं?

  1. एंड्रॉइड में EditText खाली है या नहीं कैसे जांचें? एंड्रॉइड में EditText खाली है या नहीं कैसे जांचें?

    एंड्रॉइड में EditText खाली/वैलिड है या नहीं जांचना — बेस्ट प्रैक्टिसेज यूज़र इनपुट वैलिडेट करना हर ऐप की बुनियादी जरूरत है। TextUtils.isEmpty() सबसे सरल तरीका है, लेकिन **सिर्फ खाली स्ट्रिंग ही नहीं, व्हाइटस्पेस-ओनली स्ट्रिंग भी अमान्य माननी चाहिए**। यह ट्यूटोरियल सभी सामान्य पैटर्न कवर करता है। चर

  1. Android के लिए सॉफ्ट कीबोर्ड कैसे विकसित करें? Android के लिए सॉफ्ट कीबोर्ड कैसे विकसित करें?

    यह उदाहरण एक बेसिक Android ऐप दर्शाता है जो EditText इनपुट को TextView में दिखाता है - वास्तविक सॉफ्ट कीबोर्ड विकास के लिए InputMethodService की आवश्यकता होती है। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में File → New Project चुनें। चरण 2: UI लेआउट res/layout/activity_main.xml: <?xml version=

  1. Android एक्टिविटी में नेविगेशन बार को स्थायी रूप से कैसे छुपाएं? Android एक्टिविटी में नेविगेशन बार को स्थायी रूप से कैसे छुपाएं?

    Android में नेविगेशन बार परमानेंटली हाइड करने का पूरा गाइड यह ट्यूटोरियल दिखाता है कि कैसे इमर्सिव स्टिकी मोड का उपयोग करके नेविगेशन बार (बैक, होम, रीसेंट बटन) को स्थायी रूप से छुपाया जाए, जिससे यूजर इंटरैक्शन तक यह छुपा रहे। चरण 1: प्रोजेक्ट सेटअप Android Studio में नया प्रोजेक्ट बनाएं। चरण 2: ले