मेरे पास एक Edit Text
इनपुट वाली गतिविधि है । जब गतिविधि आरंभ की जाती है, तो Android कीबोर्ड दिखाया जाता है। जब तक उपयोगकर्ता इनपुट पर ध्यान केंद्रित नहीं करता, तब तक कीबोर्ड कैसे छिपा रह सकता है?
android:windowSoftInputMode="adjustPan"
?
मेरे पास एक Edit Text
इनपुट वाली गतिविधि है । जब गतिविधि आरंभ की जाती है, तो Android कीबोर्ड दिखाया जाता है। जब तक उपयोगकर्ता इनपुट पर ध्यान केंद्रित नहीं करता, तब तक कीबोर्ड कैसे छिपा रह सकता है?
android:windowSoftInputMode="adjustPan"
?
जवाबों:
मुझे लगता है कि निम्नलिखित काम कर सकते हैं
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
मैंने इसे इस तरह की चीज़ के लिए पहले भी इस्तेमाल किया है।
EditText
? :) यह कीबोर्ड छिपाने के लिए है जब गतिविधि शुरू होती है जिसमें शामिल हैEditText
इसे भी आजमाएं -
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
अन्यथा, अपनी घोषणा फ़ाइल की गतिविधि में घोषणा करें -
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".Main"
android:label="@string/app_name"
android:windowSoftInputMode="stateHidden"
>
आप पहले से ही उपयोग किया गया है, तो android:windowSoftInputMode
जैसे एक मूल्य के लिए adjustResize
या adjustPan
, आप की तरह दो मूल्यों को जोड़ सकते हैं:
<activity
...
android:windowSoftInputMode="stateHidden|adjustPan"
...
>
जब भी उपयुक्त हो, यह कीबोर्ड को छिपा देगा, लेकिन कीबोर्ड को दिखाए जाने की स्थिति में गतिविधि दृश्य को पैन कर दें।
थीम का उपयोग करके सभी गतिविधियों के लिए इसे छिपाएं
<style name="MyTheme" parent="Theme">
<item name="android:windowSoftInputMode">stateHidden</item>
</style>
विषय निर्धारित करें
<application android:theme="@style/MyTheme">
इन दो गुणों को अपने मूल लेआउट में जोड़ें (उदा: रैखिक लेआउट, सापेक्ष लेआउट)
android:focusable="false"
android:focusableInTouchMode="false"
यह चाल चलेगा :)
true
जैक टी के जवाब के अनुसार, उन्हें काम करने के लिए सेट करना है । क्या हाल के संस्करणों में व्यवहार परिवर्तन हुआ था?
false
काम क्यों करना चाहिए, क्योंकि विचार यह है कि एडिटटेक्स्ट बॉक्स से ध्यान हटाएं।
इसे मेनिफ़ेस्ट फ़ाइल में घोषित करने का प्रयास करें
<activity android:name=".HomeActivity"
android:label="@string/app_name"
android:windowSoftInputMode="stateAlwaysHidden"
>
बस AndroidManifest.xml में जोड़ें
<activity android:name=".HomeActivity" android:windowSoftInputMode="stateHidden">
</activity>
आप कोड की इन पंक्तियों को .xml लेआउट फ़ाइल के प्रत्यक्ष मूल लेआउट में भी लिख सकते हैं जिसमें आपको "समस्या" है:
android:focusable="true"
android:focusableInTouchMode="true"
उदाहरण के लिए:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
...
android:focusable="true"
android:focusableInTouchMode="true" >
<EditText
android:id="@+id/myEditText"
...
android:hint="@string/write_here" />
<Button
android:id="@+id/button_ok"
...
android:text="@string/ok" />
</LinearLayout>
संपादित करें:
उदाहरण अगर EditText दूसरे लेआउट में समाहित है:
<?xml version="1.0" encoding="utf-8"?>
<ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
... > <!--not here-->
... <!--other elements-->
<LinearLayout
android:id="@+id/theDirectParent"
...
android:focusable="true"
android:focusableInTouchMode="true" > <!--here-->
<EditText
android:id="@+id/myEditText"
...
android:hint="@string/write_here" />
<Button
android:id="@+id/button_ok"
...
android:text="@string/ok" />
</LinearLayout>
</ConstraintLayout>
कुंजी यह सुनिश्चित करने के लिए है कि EditText सीधे ध्यान देने योग्य नहीं है।
अलविदा! ;-)
मेरे लिए सबसे अच्छा समाधान, अपनी कक्षा पेस्ट करें
@Override
public void onResume() {
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
super.onResume();
}
@Override
public void onStart() {
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
super.onStart();
}
कीबोर्ड को छिपाने का कार्य।
public static void hideKeyboard(Activity activity) {
View view = activity.getCurrentFocus();
if (view != null) {
InputMethodManager inputManager = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}
}
AndroidManifext.xml फ़ाइल में कीबोर्ड छिपाएँ।
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme"
android:windowSoftInputMode="stateHidden">
@ उत्तर द्वारा स्वीकृत उत्तर का विस्तार करने के लिए:
प्रारंभिक जीवन चक्र की घटनाओं में से एक में अपनी गतिविधि से इसे कॉल करें:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
override fun onResume() {
super.onResume()
window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN)
}
आप प्रत्येक तत्व के लिए यह सेट विशिष्ट विशेषता आज़मा सकते हैं
TextView mtextView = findViewById(R.id.myTextView);
mtextView.setShowSoftInputOnFocus(false);
जब तत्व फोकस होगा तो कीबोर्ड नहीं दिखेगा
//to hide the soft keyboard
InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
बस इसे अपनी गतिविधि पर जोड़ें:
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (getCurrentFocus() != null) {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
}
return super.dispatchTouchEvent(ev);
}
<activity android:windowSoftInputMode="stateHidden" ...>