दिलचस्प पोस्ट
जावा छविओआईओ मानक पुस्तकालय का उपयोग करके टीआईएफएफ छवि फाइल को पढ़ और नहीं पढ़ सकते हैं urlencoded फॉरवर्ड स्लैश यूआरएल टूट रहा है प्रत्येक व्युत्पन्न तालिका में अपने स्वयं के उपनाम होना चाहिए डेटाबेस बनाम फ्लैट फाइलें लक्ष्य = "_ रिक्त" बनाम लक्ष्य = "_ नया" Async-await on .net 4 का उपयोग करना समय के लिए दिनांक समय डालना कैसे करें SQL सर्वर में दिनांक और समय से तारीख पाने के लिए सबसे प्रभावी तरीका है? 3 डी स्थिति को 2 डी स्क्रीन स्थिति में परिवर्तित करना मैं कोणीय 2 में सिंगलटन सेवा कैसे बनाऊं? Javascript arrays का उपयोग करके एक सेट अंतर की गणना करने के लिए सबसे तेज़ या सबसे खूबसूरत तरीका क्या है? जावास्क्रिप्ट के साथ एचटीएमएल ईमेल जावा में ट्रिटी टर्नरी ऑपरेटर – ऑटोबॉक्सिंग आईओएस स्थिति पट्टी को कैसे छिपाएंगे I एंड्रॉइड के लिए एक्लिप्स में प्रोगुर्ड को सक्षम करना

एडल्टिक्स पर ध्यान केंद्रित करते समय सॉफ्ट-कीबोर्ड कैसे दिखाना

मैं स्वचालित रूप से नरम-कुंजीपटल दिखाना चाहता हूं जब एक EditText केंद्रित होता है (यदि डिवाइस में एक भौतिक कीबोर्ड नहीं है) और मेरे पास दो समस्याएं हैं:

  1. जब मेरी Activity प्रदर्शित होती है, मेरा EditText फ़ोकस होता है लेकिन कुंजीपटल प्रदर्शित नहीं होता है, मुझे कुंजीपटल दिखाने के लिए उस पर फिर से क्लिक करना होगा (यह तब प्रदर्शित होना चाहिए जब मेरी Activity प्रदर्शित होती है)।

  2. और जब मैं कीबोर्ड पर क्लिक करता हूं, तो कीबोर्ड को दबा दिया जाता है, लेकिन संपादन टेक्स्ट केंद्रित रहता है और y नहीं चाहता (क्योंकि मेरा संपादन किया गया है)।

फिर से शुरू करने के लिए, मेरी समस्या को आईफोन पर कुछ और करना होगा: जो कि मेरे EditText स्थिति (केंद्रित / केंद्रित नहीं) के साथ कुंजीपटल सिंक्रनाइज़ेशन रखता है और निश्चित रूप से एक नरम-कुंजीपटल प्रस्तुत नहीं करता है, अगर कोई भौतिक एक है

वेब के समाधान से एकत्रित समाधान "एडल्टिक्स पर ध्यान केंद्रित करते समय सॉफ्ट-कीबोर्ड कैसे दिखाना"

नरम कीबोर्ड को प्रकट करने के लिए मजबूर करने के लिए, आप उपयोग कर सकते हैं

 EditText yourEditText= (EditText) findViewById(R.id.yourEditText); InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(yourEditText, InputMethodManager.SHOW_IMPLICIT); 

और EditText पर फ़ोकस हटाने के लिए, दुर्भाग्य से आपको फ़ोकस को पकड़ने के लिए एक डमी View

आशा है कि ये आपकी मदद करेगा


इसे बंद करने के लिए आप उपयोग कर सकते हैं

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

मुझे भी यही समस्या थी। संपादन के बाद तत्काल दृश्यता को जाने से विजयन के लिए बदल गया, मुझे फोकस सेट करना पड़ा और नरम कीबोर्ड प्रदर्शित करना पड़ा। मैं इसे निम्न कोड का उपयोग कर हासिल किया है:

 new Handler().postDelayed(new Runnable() { public void run() { // ((EditText) findViewById(R.id.et_find)).requestFocus(); // EditText yourEditText= (EditText) findViewById(R.id.et_find); // InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); // imm.showSoftInput(yourEditText, InputMethodManager.SHOW_IMPLICIT); yourEditText.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_DOWN , 0, 0, 0)); yourEditText.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_UP , 0, 0, 0)); } }, 200); 

यह मेरे लिए 100 मीटर की देरी के साथ काम करता है, लेकिन बिना किसी देरी के असफल हो या केवल 1 एमएमएस के विलंब के साथ।

कोड का हिस्सा टिप्पणी एक अन्य दृष्टिकोण को दर्शाता है, जो केवल कुछ उपकरणों पर काम करता है। मैंने ओएस संस्करण 2.2 (एमुलेटर), 2.2.1 (वास्तविक उपकरण) और 1.6 (एमुलेटर) पर परीक्षण किया।

इस दृष्टिकोण ने मुझे बहुत दर्द बचाया

कीबोर्ड प्रकट होने के कारण, उपयोग करें

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

यह विधि सीधे InputMethodManager को लागू करने से अधिक विश्वसनीय है।

इसे बंद करने के लिए, उपयोग करें

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

निम्न कोड Google के 4.1 स्रोत कोड से SearchView के लिए लूट लिया गया है। काम करने के लिए लगता है, एंड्रॉइड के कम संस्करणों के साथ ही ठीक है।

 private Runnable mShowImeRunnable = new Runnable() { public void run() { InputMethodManager imm = (InputMethodManager) getContext() .getSystemService(Context.INPUT_METHOD_SERVICE); if (imm != null) { imm.showSoftInput(editText, 0); } } }; private void setImeVisibility(final boolean visible) { if (visible) { post(mShowImeRunnable); } else { removeCallbacks(mShowImeRunnable); InputMethodManager imm = (InputMethodManager) getContext() .getSystemService(Context.INPUT_METHOD_SERVICE); if (imm != null) { imm.hideSoftInputFromWindow(getWindowToken(), 0); } } } 

इसके अतिरिक्त, निम्नलिखित कोड को नियंत्रण / गतिविधि के रूप में जोड़ा जाना चाहिए। (मेरे मामले में यह एक गतिविधि के बजाय समग्र नियंत्रण है)।

 this.editText.setOnFocusChangeListener(new View.OnFocusChangeListener() { public void onFocusChange(View v, boolean hasFocus) { setImeVisibility(hasFocus); } }); 

जब कोई और काम नहीं करता, तो उसे दिखाया जा सकता है:

 editText.requestFocus(); InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY); 

android:windowSoftInputMode="stateAlwaysVisible" -> मैनिफ़ेस्ट फ़ाइल में।

edittext.requestFocus(); -> कोड में

यह नरम कीबोर्ड खोलता है जिस पर संपादन-पाठ का अनुरोध फ़ोकस होता है, जैसा कि गतिविधि दिखाई देता है।

नीचे दिए गए कोड के साथ कुछ सरल मामलों में मुझे कुछ हाल ही में भाग्य मिला है। मैंने सभी परीक्षण समाप्त नहीं किए हैं ….

 EditText input = (EditText) findViewById(R.id.Input); input.requestFocus(); input.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_DOWN , 0, 0, 0)); input.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_UP , 0, 0, 0)); 

और कीबोर्ड की तरफ से पता चलता है

आप सॉफ्ट कीबोर्ड को प्रकट होने के लिए बाध्य करने की कोशिश कर सकते हैं, यह मेरे लिए काम करता है:

 ... dialog.show(); input.requestFocus(); InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); 

कभी-कभी राउकोदराग का जवाब काम नहीं करेगा। मैंने इसे कुछ परीक्षण और त्रुटियों के साथ बनाया है:

 public static void showKeyboard(Activity activity) { if (activity != null) { activity.getWindow() .setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); } } public static void hideKeyboard(Activity activity) { if (activity != null) { activity.getWindow() .setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); } } 

और संपादन टेक्स्ट का हिस्सा:

  editText.setOnFocusChangeListener(new View.OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { if (!hasFocus) { hideKeyboard(getActivity()); } else { showKeyboard(getActivity()); } } }); 

showSoftInput मेरे लिए बिल्कुल भी काम नहीं कर रहा था।

मुझे लगा कि मुझे इनपुट मोड सेट करने की आवश्यकता है: (मैनिफ़ेस्ट में गतिविधि घटक में यहां)

 android:windowSoftInputMode="stateVisible" 

मैं सब कुछ यहाँ और मेरे लिए यह काम करता है:

 public static void showKeyboardWithFocus(View v, Activity a) { try { v.requestFocus(); InputMethodManager imm = (InputMethodManager) a.getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(v, InputMethodManager.SHOW_IMPLICIT); a.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE); } catch (Exception e) { e.printStackTrace(); } } 

मानो या सॉफ़्ट कीबोर्ड के साथ मेरी समस्या हल नहीं हुई जब मुझे पता चला कि क्रियाएँ एनिमेशन शीतल कीबोर्ड को अक्षम कर सकते हैं। जब आप इसके साथ आशय कहते हैं

 i.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); 

तथा

 overridePendingTransition(0, 0); 

यह सॉफ्ट कीबोर्ड छुपा सकता है और इसे दिखाने का एक तरीका नहीं है।

मुझे विभिन्न विभिन्न परिस्थितियों में एक ही समस्या थी, और समाधान मुझे कुछ में काम मिल गया है, लेकिन दूसरों में काम नहीं करते हैं, इसलिए यह एक संयोजन समाधान है जो मैंने पाया है कि अधिकांश स्थितियों में काम करता है:

 public static void showVirtualKeyboard(Context context, final View view) { if (context != null) { final InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); view.clearFocus(); if(view.isShown()) { imm.showSoftInput(view, 0); view.requestFocus(); } else { view.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() { @Override public void onViewAttachedToWindow(View v) { view.post(new Runnable() { @Override public void run() { view.requestFocus(); imm.showSoftInput(view, 0); } }); view.removeOnAttachStateChangeListener(this); } @Override public void onViewDetachedFromWindow(View v) { view.removeOnAttachStateChangeListener(this); } }); } } } 

कीबोर्ड को छिपाने के लिए, इसका उपयोग करें:

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

और कुंजीपटल दिखाने के लिए:

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

टुकड़ा के लिए, सुनिश्चित करें कि इसके काम:

  displayName = (EditText) view.findViewById(R.id.displayName); InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); 

यह मेरे लिए काम किया कीबोर्ड दिखाने के लिए आप इसके साथ भी कोशिश कर सकते हैं:

 getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); 
 final InputMethodManager keyboard = (InputMethodManager) ctx.getSystemService(Context.INPUT_METHOD_SERVICE); keyboard.toggleSoftInput(InputMethodManager.SHOW_FORCED,0); 

सांकेतिक टुकड़ा । । ।

 public void hideKeyboard(Context activityContext){ InputMethodManager imm = (InputMethodManager) activityContext.getSystemService(Context.INPUT_METHOD_SERVICE); //android.R.id.content ( http://stackoverflow.com/a/12887919/2077479 ) View rootView = ((Activity) activityContext) .findViewById(android.R.id.content).getRootView(); imm.hideSoftInputFromWindow(rootView.getWindowToken(), 0); } public void showKeyboard(Context activityContext, final EditText editText){ final InputMethodManager imm = (InputMethodManager) activityContext.getSystemService(Context.INPUT_METHOD_SERVICE); if (!editText.hasFocus()) { editText.requestFocus(); } editText.post(new Runnable() { @Override public void run() { imm.showSoftInput(editText, InputMethodManager.SHOW_FORCED); } }); } 
 editText.post(new Runnable() { @Override public void run() { InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT); } }); 

बस एंड्रॉइड जोड़ें: विंडोसाफ्टइनपुटमोद = "मैनिफ़ेस्ट फ़ाइल में" राज्य निहित "…

ऊपर दिए गए सभी समाधान ( OnFocusChangeListener.onFocusChanged में सुगम श्रोता) आपके संपादन टेक्स्ट से जुड़ी श्रोता, ठीक काम करता है यदि आपके पास गतिविधि में एकल संपादन होता है

मेरे मामले में मेरे पास दो संपादन हैं

  private EditText tvX, tvY; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); tvX.setOnFocusChangeListener(this); tvY.setOnFocusChangeListener(this); @Override public void onFocusChange(View v, boolean hasFocus) { InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); if(tvX.hasFocus() || tvY.hasFocus()) { imm.showSoftInput(v, 0); } else { imm.hideSoftInputFromWindow(v.getWindowToken(), 0); } }; 

मैंने देखा है कि फोकस चेंज के साथ टीएपीएक्स के लिए हैफोकस = सच (कुंजीपटल दिखाया गया है) है, लेकिन तब है के साथ टी वीवाई के लिए हैफोकस = सच (कीबोर्ड छुपा)। अंत में, कोई भी कीबोर्ड दिखाई नहीं दे रहा था।

सामान्य समाधान में सही वक्तव्य होना चाहिए, अगर "पाठ्य कुंजीपटल दिखाएँ यदि पाठ टेक्स्ट फोकस है"

अपने ऑनरस्यूम () अनुभाग में गतिविधि को लाने के लिए आप कॉल कर सकते हैं मेसेज bringKeyboard ();

  onResume() { EditText yourEditText= (EditText) findViewById(R.id.yourEditText); bringKeyboard(yourEditText); } protected boolean bringKeyboard(EditText view) { if (view == null) { return false; } try { // Depending if edittext has some pre-filled values you can decide whether to bring up soft keyboard or not String value = view.getText().toString(); if (value == null) { InputMethodManager imm = (InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(view.getWindowToken(), 0); return true; } } catch (Exception e) { Log.e(TAG, "decideFocus. Exception", e); } return false; } 

अपने मेनिफेस्ट के अंदर:

android:windowSoftInputMode="stateAlwaysVisible" – आरंभ में कीबोर्ड शुरू किया गया android:windowSoftInputMode="stateAlwaysHidden" – प्रारंभ में छुपे हुए कुंजीपटल

मैं "adjustPan" का भी उपयोग करना चाहता हूं क्योंकि जब कुंजीपटल लॉन्च करता है तो स्क्रीन ऑटो समायोजित होता है।

  <activity android:name="YourActivity" android:windowSoftInputMode="stateAlwaysHidden|adjustPan"/> 

चूंकि मेरे एक ऐप्स में से एक में, सॉफ्ट कीबोर्ड स्वचालित रूप से गतिविधि में प्रवेश करने पर दिख रहा था (ऑन-क्रेते में एक editText.requestFocus () है) मुझे एक अजीब व्यवहार की खोज हुई।

आगे खुदाई करने पर, मुझे पता चला कि यह इसलिए था क्योंकि लेआउट के चारों ओर एक ScrollView है अगर मैं ScrollView को निकालता हूं, तो व्यवहार को मूल समस्या के बयान में वर्णित किया गया है: केवल पहले से ही केंद्रित संपादन टेक्स्ट पर क्लिक करने पर ही नरम कीबोर्ड दिखाई देता है।

अगर यह आपके लिए काम नहीं करता है, तो ScrollView में डालने का प्रयास करें – यह वैसे भी हानिरहित है।

दृश्य एनिमेशन का उपयोग करते हुए मुझे एक ऐसी समस्या थी इसलिए मैंने यह सुनिश्चित करने के लिए एनीमेशन श्रोता रखा है कि एनीमेशन समाप्त होने का इंतजार करने से पहले दिखाए गए एडिथिक्स पर एक कीबोर्ड एक्सेस का अनुरोध करने से पहले मैं इंतजार करूँगा।

  bottomUp.setAnimationListener(new Animation.AnimationListener() { @Override public void onAnimationStart(Animation animation) { } @Override public void onAnimationEnd(Animation animation) { if (textToFocus != null) { // Position cursor at the end of the text textToFocus.setSelection(textToFocus.getText().length()); // Show keyboard InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(textToFocus, InputMethodManager.SHOW_IMPLICIT); } } @Override public void onAnimationRepeat(Animation animation) { } }); 

मैं रौकोदराग के साथ सहमत हूँ ताकि एक swithview में उपयोग करने के लिए आपको इस तरह से स्पष्ट / स्पष्ट ध्यान देना चाहिए:

  final ViewSwitcher viewSwitcher = (ViewSwitcher) findViewById(R.id.viewSwitcher); final View btn = viewSwitcher.findViewById(R.id.address_btn); final View title = viewSwitcher.findViewById(R.id.address_value); title.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { viewSwitcher.showPrevious(); btn.requestFocus(); InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(btn, InputMethodManager.SHOW_IMPLICIT); } }); // EditText affiche le titre evenement click btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { btn.clearFocus(); viewSwitcher.showNext(); InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(btn.getWindowToken(), 0); // Enregistre l'adresse. addAddress(view); } }); 

सादर।

ज़ामारीन का उपयोग करना, यह एक टुकड़े के अंदर मेरे लिए काम करता है:

 using Android.Views.InputMethods; using Android.Content; ... if ( _txtSearch.RequestFocus() ) { var inputManager = (InputMethodManager) Activity.GetSystemService( Context.InputMethodService ); inputManager.ShowSoftInput( _txtSearch, ShowFlags.Implicit ); } 

मैंने यह सहायता वर्ग बनाया है बस संदर्भ और उस दृश्य को पास करें जिसे आप फ़ोकस करना चाहते हैं और कुंजीपटल और छुपा कीबोर्ड के बाद दिखाएं। मुझे उम्मीद है यह मदद करेगा।

 public class FocusKeyboardHelper { private View view; private Context context; private InputMethodManager imm; public FocusKeyboardHelper(Context context, View view){ this.view = view; this.context = context; imm = (InputMethodManager) context.getSystemService(context.INPUT_METHOD_SERVICE); } public void focusAndShowKeyboard(){ view.requestFocus(); imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY); } public void hideKeyBoard(){ imm.hideSoftInputFromWindow(view.getWindowToken(), 0); } 

}

  void requestFocus(View editText, Activity activity) { try { editText.requestFocus(); InputMethodManager imm = (InputMethodManager) a.getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT); activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE); } catch (Exception e) { e.printStackTrace(); } } 

इस लाइन को भी मत भूलो

 activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE); 

आप संपादन टेक्स्ट के एक कस्टम एक्सटेंशन को भी बना सकते हैं जो कि फ़ोकस प्राप्त होने पर नरम कीबोर्ड खोलने के लिए जानता है यही है कि मैंने क्या किया है यहाँ मेरे लिए क्या काम किया है:

 public class WellBehavedEditText extends EditText { private InputMethodManager inputMethodManager; private boolean showKeyboard = false; public WellBehavedEditText(Context context) { super(context); this.initializeWellBehavedEditText(context); } public WellBehavedEditText(Context context, AttributeSet attributes) { super(context, attributes); this.initializeWellBehavedEditText(context); } public WellBehavedEditText(Context context, AttributeSet attributes, int defStyleAttr) { super(context, attributes, defStyleAttr); this.initializeWellBehavedEditText(context); } public WellBehavedEditText(Context context, AttributeSet attributes, int defStyleAttr, int defStyleRes) { super(context, attributes, defStyleAttr, defStyleRes); this.initializeWellBehavedEditText(context); } private void initializeWellBehavedEditText(Context context) { this.inputMethodManager = (InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE); final WellBehavedEditText editText = this; this.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { if(showKeyboard) { showKeyboard = !(inputMethodManager.showSoftInput(editText, InputMethodManager.SHOW_FORCED)); } } }); } @Override protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) { if(!focused) this.showKeyboard = false; super.onFocusChanged(focused, direction, previouslyFocusedRect); } @Override public boolean requestFocus(int direction, Rect previouslyFocusedRect) { boolean result = super.requestFocus(direction, previouslyFocusedRect); this.showKeyboard = true; final WellBehavedEditText self = this; this.post(new Runnable() { @Override public void run() { showKeyboard = !(inputMethodManager.showSoftInput(self, InputMethodManager.SHOW_FORCED)); } }); return result; } }