गतिविधि शुरू होने पर सॉफ्ट कीबोर्ड को कैसे छिपाएं


151

मेरे पास android:windowSoftInputMode="stateVisible"मेनिफेस्ट में एक एडिटटेक्स्ट है । अब जब मैं गतिविधि शुरू करूंगा तो कीबोर्ड दिखाया जाएगा। इसे कैसे छिपाएं? मैं उपयोग नहीं कर सकता android:windowSoftInputMode="stateHiddenक्योंकि जब कीबोर्ड दिखाई देता है तो ऐप को छोटा करें और फिर से शुरू करें कीबोर्ड दिखाई दे। मैंने कोशिश की

InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);

लेकिन यह काम नहीं करता।

जवाबों:


1

यदि आप xml का उपयोग नहीं करना चाहते हैं, तो कीबोर्ड को छिपाने के लिए कोटलिन एक्सटेंशन बनाएं

// In onResume, call this
myView.hideKeyboard()

fun View.hideKeyboard() {
    val inputMethodManager = context.getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager
    inputMethodManager.hideSoftInputFromWindow(windowToken, 0)
}

उपयोग के मामले पर आधारित विकल्प:

fun Fragment.hideKeyboard() {
    view?.let { activity?.hideKeyboard(it) }
}

fun Activity.hideKeyboard() {
    // Calls Context.hideKeyboard
    hideKeyboard(currentFocus ?: View(this))
}

fun Context.hideKeyboard(view: View) {
    view.hideKeyboard()
}

सॉफ्ट कीबोर्ड कैसे दिखाएं

fun Context.showKeyboard() { // Or View.showKeyboard()
    val inputMethodManager = context.getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager
    inputMethodManager.toggleSoftInput(SHOW_FORCED, HIDE_IMPLICIT_ONLY)
}

सरल विधि जब एक साथ एक edittext पर ध्यान देने का अनुरोध करती है

myEdittext.focus()

fun View.focus() {
    requestFocus()
    showKeyboard()
}

बोनस सरलीकरण:

हमेशा के लिए आवश्यकता को निकालें getSystemService: स्प्लिट्स लाइब्रेरी

// Simplifies above solution to just
inputMethodManager.hideSoftInputFromWindow(windowToken, 0)

361

में AndroidManifest.xml:

<activity android:name="com.your.package.ActivityName"
          android:windowSoftInputMode="stateHidden"  />

या कोशिश करो

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN)‌​;

कृपया इसे भी देखें


3
के लिए धन्यवाद android:windowSoftInputMode="stateHidden"
Shylendra Madda

2
असल में वहाँ भी रोकने पाठ संपादित करें पर ध्यान केंद्रित पर महान जवाब है stackoverflow.com/questions/4668210/...
बोरिस Treukhov

204

कीबोर्ड को दिखाने / छिपाने के लिए निम्नलिखित कार्यों का उपयोग करें:

/**
 * Hides the soft keyboard
 */
public void hideSoftKeyboard() {
    if(getCurrentFocus()!=null) {
        InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
        inputMethodManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
    }
}

/**
 * Shows the soft keyboard
 */
public void showSoftKeyboard(View view) {
    InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
    view.requestFocus();
    inputMethodManager.showSoftInput(view, 0);
}

4
Context.INPUT_METHOD_SERVICE उन लोगों के लिए है जो अंशों में हैं या मुख्य गतिविधि आदि में नहीं हैं
ओलिवर डिक्सन

7
आप यह कोशिश कर सकते हैं। यदि आप इसे गतिविधि से कहते हैं तो यह काम करता है। । GetWindow () setSoftInputMode (WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
सिनान डिज़ादेरीविच

क्या होगा अगर हमें एक श्रोता के भीतर से यह कॉल करने की आवश्यकता है? जैसेonFocusChange()
आंद्रे युहाई

44

बस EditText के मूल दृश्य में दो विशेषताएँ जोड़ें।

android:focusable="true"
android:focusableInTouchMode="true"

36

इसे गतिविधि टैग के अंदर प्रकट में रखें

  android:windowSoftInputMode="stateHidden"  

या android: windowSoftInputMode = "StateUnchanged" - यह इस तरह काम करता है: यदि यह पहले से नहीं दिखाया गया है, तो इसे न दिखाएं, लेकिन अगर यह गतिविधि में प्रवेश करते समय खुला था, तो इसे खुला छोड़ दें)।
सुजीत कुमार गुप्ता

फिर आप सही हैं। लेकिन क्या होगा अगर अभिविन्यास बदल गया?
सनेश

26

इसे इस्तेमाल करे:

<activity
    ...
    android:windowSoftInputMode="stateHidden|adjustResize"
    ...
>

को देखो यह अधिक जानकारी के लिए एक।


14

नई गतिविधि शुरू या के समय softkeyboard को छुपाने के लिए onCreate(), onStart()आदि आप नीचे दिए गए कोड का उपयोग कर सकते हैं:

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

10

AndroidManifest.xml का उपयोग कर

<activity android:name=".YourActivityName"
      android:windowSoftInputMode="stateHidden"  
 />

जावा का उपयोग करना

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);

उपरोक्त समाधान कीबोर्ड का उपयोग करते हुए, लेकिन एक्टिवा बनाए जाने पर ध्यान केंद्रित करने से edittext का उपयोग करते हुए, लेकिन जब आप उनका उपयोग करके स्पर्श करते हैं, तो इसे पकड़ो:

अपने EditText में जोड़ें

<EditText
android:focusable="false" />

अपने EditText के श्रोता को भी जोड़ें

youredittext.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
    v.setFocusable(true);
    v.setFocusableInTouchMode(true);
    return false;
}});

7

अपनी xml फ़ाइल में निम्न पाठ जोड़ें।

<!--Dummy layout that gain focus -->
            <LinearLayout
                android:layout_width="0dp"
                android:layout_height="0dp"
                android:focusable="true"
                android:focusableInTouchMode="true"
                android:orientation="vertical" >
            </LinearLayout>

6

मुझे उम्मीद है कि यह काम करेगा, मैंने कई तरीकों की कोशिश की, लेकिन इसने मेरे लिए काम किया fragments। बस इस लाइन को onCreateview / init में डालें।

getActivity().getWindow().setSoftInputMode(
    WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

5

नई गतिविधि के प्रारंभ या चालू होने के समय सॉफ्टबोर्ड को छिपाने के लिए, ऑनस्टार्ट () विधि आदि का उपयोग करें:

getActivity().getWindow().setSoftInputMode(WindowManager.
LayoutParams.SOFT_INPUT_STATE_HIDDEN);

बटन के समय सॉफ्टकीबोर्ड छिपाने के लिए गतिविधि में क्लिक करें:

View view = this.getCurrentFocus();

    if (view != null) {
        InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
        assert imm != null;
        imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
    }

5

SOFT_INPUT_STATE_ALIDS के बजाय SOFT_INPUT_STATE_ALWAYS_HIDDEN का उपयोग करें

this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

5

अपनी संपत्ति में इस गतिविधि में जोड़ें

android:windowSoftInputMode="stateHidden" 

4

इस कोड को अपनी जावा फ़ाइल में डालें और edittext पर ऑब्जेक्ट के लिए तर्क पास करें,

private void setHideSoftKeyboard(EditText editText){
    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
}

4

आप AndroidManifest.xml पर कॉन्फ़िगरेशन सेट कर सकते हैं

उदाहरण:

<activity
    android:name="Activity"
    android:configChanges="orientation|keyboardHidden"
    android:theme="@*android:style/Theme.NoTitleBar"
    android:launchMode="singleTop"
    android:windowSoftInputMode="stateHidden"/>

4

गतिविधि शुरू करने पर सॉफ्टबोर्ड को पहली बार छिपाने के लिए निम्न कोड का उपयोग करें

getActivity().getWindow().setSoftInputMode(WindowManager.
LayoutParams.SOFT_INPUT_STATE_HIDDEN);

3

यह भी एक कोशिश करो

Ed_Cat_Search = (EditText) findViewById(R.id.editText_Searc_Categories);

Ed_Cat_Search.setInputType(InputType.TYPE_NULL);

Ed_Cat_Search.setOnTouchListener(new View.OnTouchListener() {
    public boolean onTouch(View v, MotionEvent event) {
        Ed_Cat_Search.setInputType(InputType.TYPE_CLASS_TEXT);
        Ed_Cat_Search.onTouchEvent(event); // call native handler
        return true; // consume touch even
    }
});

3

उपरोक्त उत्तर भी सही हैं। मैं केवल एक संक्षिप्त जानकारी देना चाहता हूं कि गतिविधि शुरू करते समय कीबोर्ड को छिपाने के दो तरीके हैं। उदाहरण के लिए:

<activity
..........
android:windowSoftInputMode="stateHidden"
..........
/>
  • गतिविधि में प्रवेश करते समय उपरोक्त तरीका हमेशा इसे छिपाता है।

या

<activity
..........
android:windowSoftInputMode="stateUnchanged"
..........
/>
  • यह कहता है कि इसे मत बदलो (जैसे कि यदि यह पहले से नहीं दिखाया गया है तो इसे न दिखाएं, लेकिन यदि यह गतिविधि में प्रवेश करते समय खुला था, तो इसे खुला छोड़ दें)।

2

यह जो मैंने किया है:

yourEditText.setCursorVisible(false); //This code is used when you do not want the cursor to be visible at startup
        yourEditText.setOnTouchListener(new View.OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                v.onTouchEvent(event);   // handle the event first
                InputMethodManager imm = (InputMethodManager)v.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
                if (imm != null) {

                    imm.hideSoftInputFromWindow(v.getWindowToken(), 0);  // hide the soft keyboard
                    yourEditText.setCursorVisible(true); //This is to display cursor when upon onTouch of Edittext
                }
                return true;
            }
        });

2

यदि आपका एप्लिकेशन एंड्रॉइड एपीआई स्तर 21 या उससे अधिक का लक्ष्य है, तो एक डिफ़ॉल्ट विधि उपलब्ध है।

editTextObj.setShowSoftInputOnFocus(false);

सुनिश्चित करें कि आपने EditTextXML टैग में नीचे कोड निर्धारित किया है ।

<EditText  
    ....
    android:enabled="true"
    android:focusable="true" />

1

इसे इस्तेमाल करे।

पहले अपने खोज योग्य xml में खेतों (नाम और संकेत आदि) को डालें @stringऔर शाब्दिक तार न लगाएं।

फिर विधि onCreateOptionsMenu, इसमें ComponentNameआपके पैकेज नाम और आपके पूर्ण वर्ग नाम (पैकेज नाम के साथ) के साथ एक वस्तु होनी चाहिए - मामले में गतिविधि जिसमें SearchViewघटक है वह शो खोज परिणाम उपयोग के समान है getComponentName(), जैसा कि Google android डेवलपर कहते हैं।

मैंने बहुत सारे समाधानों की कोशिश की और बहुत बाद में, यह समाधान मेरे लिए काम करता है।


1
Ed_Cat_Search = (EditText) findViewById(R.id.editText_Searc_Categories);

Ed_Cat_Search.setInputType(InputType.TYPE_NULL);

Ed_Cat_Search.setOnTouchListener(new View.OnTouchListener() {
    public boolean onTouch(View v, MotionEvent event) {
        Ed_Cat_Search.setInputType(InputType.TYPE_CLASS_TEXT);
        Ed_Cat_Search.onTouchEvent(event); // call native handler
        return true; // consume touch even
    }
});

this one worked for me

1
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);

यह काम करेगा


हालांकि यह कोड प्रश्न का उत्तर दे सकता है, लेकिन यह कोड क्यों और / या इस प्रश्न के उत्तर के बारे में अतिरिक्त संदर्भ प्रदान करता है, इसके दीर्घकालिक मूल्य में सुधार करता है।
रोलस्टुफ़्लोरहेयर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.