के साथ काम नहीं कर रहा है, मैं ऑनकी घटनाओं को प्राप्त करने के लिए केलीलिस्टर पर उपयोग कर रहा हूं। यह सामान्य कीबोर्ड के साथ ठीक काम करता है। लेकिन यह मुलायम कीबोर्ड के साथ काम नहीं करता है। मैं केवल संख्याओं के लिए की घटनाओं को प्राप्त करने में सक्षम हूं और वर्णमाला नहीं। क्या हल करने के लिए कोई कामकाज है? किसी भी तरह की मदद की सराहना की जाएगी।ऑनकेलिस्टर सॉफ्ट कीबोर्ड (एंड्रॉइड)
उत्तर
मुझे विश्वास नहीं है कि ऑनके लिस्टनर सॉफ़्टवेयर कीबोर्ड के साथ बिल्कुल कॉल किया जाता है। इसमें सॉफ़्टवेयर कीबोर्ड के साथ एक आईएमई डिवाइस होने के साथ कुछ करना है और आईएमई डिवाइस संभवतः कीबोर्ड के अलावा अन्य चीजें हैं। ऐसा लगता है कि केलीलिस्टर काफी बेकार है, क्योंकि यह केवल हार्डवेयर कीबोर्ड वाले फोन पर काम करता है। मैंने हाल ही में OnKeyListener का उपयोग करने के बजाय अपनी गतिविधि में EditText फ़ील्ड पर TextWatcher का उपयोग कर इस मुद्दे के आसपास काम किया।
मैंने टेक्स्टवॉचर का उपयोग करने की कोशिश की लेकिन मुझे दबाए गए प्रत्येक कुंजी के लिए कीप और कीडाउन घटनाओं की आवश्यकता है। Textwatcher बस मुझे keydown घटना देता है। –
मुझे नहीं लगता कि सॉफ्टवेयर कीबोर्ड से कीप और कीडाउन को सुनना संभव है। –
onKeyListener नरम कुंजीपटल
एंड्रॉयड 1.6 के बाद से चरित्र और संख्या चाबियाँ onKey घटना के माध्यम से नहीं जा रहे हैं के माध्यम से एंड्रॉयड 1.5 पर पूरी तरह से काम किया है, फिर भी डेल कुंजी
निराशा होती
यह करता है डिवाइस विशिष्ट लगता है। मैं पुष्टि कर सकता हूं कि यह ज़ूम और एसर ए 100 पर काम करता है। हालांकि, सैमसंग गैलेक्सी टैब प्लस केवल गैर-चरित्र बटन के लिए ईवेंट को निकाल देता है। (हनीकॉम चलाने वाले सभी डिवाइस)
श्रोताओं को अपनी विधि में डालकर और इसे पहली बार फिर से कॉल करके मुझे इसके आसपास मिल गया। ऑनक्रेट में मैं setKeyListenerForEnter() को कॉल करता हूं;
फिर, यहाँ विधि है:
सार्वजनिक शून्य setKeyListenerForEnter() {
final EditText search_entry = (EditText) findViewById(R.id.search_entry);
search_entry.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
// If the event is a key-down event on the "enter" button
if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
(keyCode == KeyEvent.KEYCODE_ENTER)) {
getSearchResults(v);
setKeyListenerForEnter();
return true;
}
return false;
}
});
}
मुझे यकीन है कि अगर यह IME कुंजीपटल खुद को संभालने की तुलना में एक बेहतर समाधान है नहीं कर रहा हूँ, लेकिन यह एक समाधान है ।
यह शायद बेवकूफ है, लेकिन इस समय एंड्रॉइड इस तरह काम करता है।
प्रलेखन बताता है कि मुख्य कार्यक्रम केवल हार्डवेयर कुंजी स्ट्रोक के लिए प्रचारित नहीं होंगे, सॉफ्टवेयर नहीं।
डिवाइस निर्माताओं को मुख्य श्रोताओं के माध्यम से नरम कीबोर्ड कार्यक्रमों को प्रचारित करने के लिए वास्तव में निराश किया जा रहा है, हालांकि यह पूरी तरह से निर्माता के बराबर है और वास्तव में नरम और हार्ड कीबोर्ड को बराबर शर्तों के साथ इलाज करने के लिए है।
एंड्रॉइड 4.2.2 से शुरू हो रहा है, एंड्रॉइड सिस्टम ही सॉफ्ट कीबोर्ड के लिए महत्वपूर्ण स्टोक इवेंट्स का समर्थन नहीं करेगा, इसलिए निर्माता भी अपना रास्ता चुनने में सक्षम नहीं होंगे।
तो यहां केवल एकमात्र मूर्खतापूर्ण विकल्प है अपने स्वयं के आईएमई (सॉफ्ट कीबोर्ड) को लागू करना, और कीस्ट्रोक स्वयं को संभालना।
टेक्स्टवॉचर का उपयोग ज्यादातर मुख्य श्रोताओं को बदलने के लिए किया जा सकता है, हालांकि editText.setText (...); टेक्स्टवॉचर घटनाओं को भी ट्रिगर करेगा, इसलिए यदि कोई केवल टाइप की गई कुंजी में रूचि रखता है तो शायद टेक्स्टवॉचर एक समाधान नहीं है।
AutocomleteTextView या EditText के साथ TextWatcher का उपयोग करते समय सावधान रहें। TextWatcher घटनाओं के भीतर से AutocompleteTextView/EditText की सामग्री में टेक्स्ट को संशोधित न करें, अन्यथा आप शायद अनंत घटना/सुनवाई लूप में समाप्त हो जाएंगे।
उम्मीद है कि यह उपलब्ध विकल्पों को स्पष्ट करने में मदद करता है, लेकिन दुख की बात यह है कि यह एक समाधान समाधान प्रदान नहीं करता है।
निराशाजनक है कि Google उनके यूआई के इस महत्वपूर्ण पहलू पर चूक गया है।
setFocusableInTouchMode(true); //Enable soft keyboard on touch for target view
setFocusable(true); //Enable hard keyboard to target view
उदाहरण:
public class CanvasView extends View{
public CanvasView(Context c){
super(c);
//enable keyboard
setOnKeyListener(new KeyBoard());
setFocusable(true);
setFocusableInTouchMode(true);
}
}
क्या आप कृपया हमें एक उदाहरण दे सकते हैं कि कोई इस कोड का उपयोग कैसे कर सकता है? मैंने अभी कोशिश की और यह काम नहीं लग रहा है। – Simon
सार्वजनिक वर्ग CanvasView देखें फैली { \t \t सार्वजनिक CanvasView (संदर्भ ग) { \t \t सुपर (ग); \t \t \t \t // कुंजीपटल सक्षम \t \t setOnKeyListener (नए कीबोर्ड()); \t \t सेट फोकस करने योग्य (सत्य); \t \t setFocusableInTouchMode (सत्य); \t}} // कैनवास दृश्य में कीबोर्ड सक्षम करें – user3309567
- 1. एंड्रॉइड ऐप विशिष्ट सॉफ्ट कीबोर्ड
- 2. एंड्रॉइड पर न्यूमेरिक सॉफ्ट कीबोर्ड
- 3. एंड्रॉइड सॉफ्ट कीबोर्ड आकार लेआउट
- 4. एंड्रॉइड सॉफ्ट कीबोर्ड काम नहीं कर रहा
- 5. एंड्रॉइड अक्षम सॉफ्ट कीबोर्ड में एंटर कुंजी
- 6. सॉफ्ट कीबोर्ड पर खोज आइकन
- 7. सॉफ्ट कीबोर्ड को खारिज होने से रोकें
- 8. एंड्रॉइड एचटीएमएल 5 - सॉफ्ट कीबोर्ड इनपुट क्षेत्र ओवरलैप करता है
- 9. एचटीएमएल फोनगैप एंड्रॉइड: संख्यात्मक सॉफ्ट कीबोर्ड के पास बटन
- 10. एंड्रॉइड सॉफ्ट कीबोर्ड: अगला बटन एचटीएमएल 5 नंबर इनपुट
- 11. एंड्रॉइड एप्लिकेशन में वेबव्यू में एचटीएमएल टेक्स्टफील्ड सॉफ्ट कीबोर्ड
- 12. एंड्रॉइड सॉफ्ट कीबोर्ड कस्टम "हो गया" बटन टेक्स्ट?
- 13. एक सी ++ फ़ाइल से एंड्रॉइड सॉफ्ट कीबोर्ड को कॉल करना
- 14. एंड्रॉइड पर छिपाने वाले सॉफ्ट कीबोर्ड से बटन को रोकें
- 15. सेवा से सॉफ्ट कीबोर्ड कैसे प्रदर्शित करें?
- 16. बिना किसी कीबोर्ड ऑपरेशन के गतिविधि पर सॉफ्ट कीबोर्ड छुपाएं
- 17. हार्डवेयर कीबोर्ड कनेक्ट होने पर भी सॉफ्ट कीबोर्ड दिखाएं
- 18. आईफ़ोन सॉफ्ट कीबोर्ड दिखाएं भले ही हार्डवेयर कीबोर्ड कनेक्ट हो,
- 19. कुंजी दर्ज करते समय सॉफ्ट कीबोर्ड खोलें
- 20. सॉफ्ट कीबोर्ड कुंजी ईवेंट हैंडल दर्ज करें
- 21. फोन की तरह केवल संख्या सॉफ्ट-कीबोर्ड
- 22. एंड्रॉइड कीबोर्ड लेआउट भाषा
- 23. एंड्रॉइड कीबोर्ड कुंजी पूर्वावलोकन छुपाएं
- 24. एमुलेटर में एंड्रॉइड 4.0 कीबोर्ड समस्या।?
- 25. एंड्रॉइड सॉफ़्ट कीबोर्ड निकालें जब सूचीदृश्य
- 26. एंड्रॉइड कीबोर्ड
- 27. एंड्रॉइड में वेबव्यू में टेक्स्टफील्ड कीबोर्ड
- 28. Android एप्लिकेशन के लिए कस्टम सॉफ्ट कीबोर्ड कैसे विकसित करें?
- 29. सॉफ्ट कीबोर्ड के ऊपर डायलॉगफ्रैगमेंट पॉजिटिव/नकारात्मक बटन कैसे रखें
- 30. ListAdapter आइटम के लिए ओपन सॉफ्ट कीबोर्ड जिसमें स्ट्रिंग
यदि आप नरम कीबोर्ड से कुछ अक्षर नहीं लेकिन दूसरों को हो रही है अजीब लग रहा है। क्या आप अपने श्रोता का कोड पोस्ट कर सकते हैं, और आप इसे कहां संलग्न कर रहे हैं? –
सार्वजनिक शून्य पर क्रेट (बंडल सेव किया गया इंस्टेंसस्टेट) { super.onCreate (savedInstanceState); setContentView (R.layout.login_screen); ईमेलटीटी = (एडिटटेक्स्ट) findViewById (R.id.email); emailTxt.setOnKeyListener (नई OnKeyListener() \t { \t \t सार्वजनिक बूलियन onKey (देखें वी, पूर्णांक कीकोड, KeyEvent घटना) \t \t { \t \t \t Log.i ("कुंजी मान", स्ट्रिंग। valueOf (keyCode)); \t \t}); } –
मैं अभी के लिए चाबियाँ पढ़ रहा हूं। –