2011-01-06 28 views
28

मेरा सवाल है: मैं फ्लाई पर सॉफ्ट कीबोर्ड के एक्शन बटन के प्रदर्शन को कैसे अपडेट कर सकता हूं?मैं फ्लाई पर संपादक एक्शन बटन डिस्प्ले को कैसे अपडेट कर सकता हूं?

एक और पोस्ट संपादक कार्रवाई को बदलने के बारे में प्रतीत होता है कीबोर्ड से पहले दिखाया गया है: Android: Can't figure how to use setImeActionLabel। मैं दिखाए जाने वाले सॉफ्ट कीबोर्ड एक्शन बटन को बदलना चाहता हूं।

मैंने आंशिक रूप से सफल किया है: - मैं इसका उपयोग करके क्रिया को बदल सकता हूं: editText.setImeOptions (EditorInfo.IME_ACTION_GO); - मैं कीबोर्ड का उपयोग करके कीबोर्ड को फिर से चला सकता हूं: InputMethodManager.restartInput (editText); मैं इसे TextWatcher.afterTextChanged का उपयोग करके करता हूं। - हालांकि, मुझे इसके साथ कोई समस्या है। यदि मैं एक कुंजी दबाता हूं, उस पर कीबोर्ड दिखाता है कि कौन सी कुंजी दबाई गई है। लेकिन जब मैं restartInput (...) को कॉल करता हूं, तो यह दृश्य को छुपाता है जो दिखाता है कि कौन सी कुंजी दबाई गई है। यह मेरे लिए सामान्य व्यवहार लगता है, लेकिन मुझे इसके चारों ओर एक रास्ता चाहिए।

संपादन टेक्स्ट और ओवरराइड पर ओवरराइड करना एक अच्छा विचार नहीं है, देखें: https://groups.google.com/forum/?fromgroups#!topic/android-developers/RIxGfx5qOjM

कीबोर्ड व्यू क्लास में बिल्कुल वही है जो मुझे चाहिए (अवैध करें), लेकिन मुझे लगता है कि जब आप अपनी इनपुट विधि बनाते हैं तो केवल तभी पहुंच योग्य होता है।

किसी और के पास कुछ बेहतर विचार हैं?

+0

दृश्य को अमान्य करने से ही काम नहीं हुआ? –

उत्तर

1

.. अधिक विशिष्ट जब आप बताएं कि आप क्या करना है ... मैं अपनी पोस्ट में कई बार आपके अनुरोध को समझने के लिए सक्षम होने के लिए पढ़ने के लिए की जरूरत चाहते हैं होने के लिए प्रयास करें

तो क्या आप क्या करना चाहते है कुंजीपटल पर दबाए गए किसी भी कुंजी पर प्रतिक्रिया कैसे करें और कीबोर्ड पर एक्शन कुंजी में इसके बारे में जानकारी दिखाएं। यदि यह आपके लक्ष्य को अधिक स्पष्ट करने के लिए नहीं है ...

यदि हां, तो मुझे लगता है कि आपको addaL EditText (दृश्यमान नहीं) का उपयोग करने की आवश्यकता होगी et0 को कॉल करने दें। आपके संपादन टेक्स्ट में ऑनटेक्स्टchanged के माध्यम से परिभाषित एक पत्र या किसी भी पैटर्न को सम्मिलित करने के बाद, ध्यान केंद्रित करें 0 पर ध्यान दें .. ताकि आप कार्रवाई को बदल सकें .. और फिर फोकस को अपने संपादन टेक्स्ट पर वापस भेज दें .. तो आप थ्रेड या टाइमर्टस्क कर सकते हैं, या e00 से और 0 से ध्यान केंद्रित करने के इस अस्थायी परिवर्तन को प्रबंधित करने का कोई भी तरीका .. यहां इनपुट को पुनरारंभ करने के लिए आवश्यक नहीं है।

आशा आप में मदद मिलेगी ..

1

आप ऑन-द-मक्खी अपने redraw कोड लागू करने से पहले /system/usr/keychars/default.kcm बदल रहा करने की कोशिश की है? (एंड्रॉइड के संस्करण के आधार पर फ़ाइल नाम अलग हो सकता है)।

वहां, आपको न केवल मुख्य आउटपुट वर्ण सेट करने की अनुमति है, बल्कि मुख्य प्रदर्शन मान भी सेट करने की अनुमति है। मैंने कोशिश नहीं की है, इसमें देरी हो सकती है, लेकिन यह एक कोशिश के लायक है।

0

यह आपके लिए बहुत उपयोगी होना चाहिए।

EditText in = new EditText(this); 
in.addTextChangedListener(new TextWatcher() { 
    public void onTextChanged(CharSequence cs, int s, int b, int c) { 
     Log.i("Key:", cs.toString()); 
    } 
    public void afterTextChanged(Editable editable) {} 
    public void beforeTextChanged(CharSequence cs, int i, int j, int k) {} 
}); 
+0

अगली बार कोड पोस्ट करने के लिए टैग का उपयोग करें। – Flawyte

+0

एसओ पर आपका स्वागत है, यहां, यह समझाने का एक अच्छा अभ्यास है कि आपके समाधान का उपयोग क्यों करें और न कि कैसे। इससे आपका उत्तर अधिक मूल्यवान हो जाएगा और आप इसे कैसे करते हैं इसकी बेहतर समझ रखने के लिए आगे पाठक की सहायता करेंगे। मैं यह भी सुझाव देता हूं कि आप हमारे अक्सर पूछे जाने वाले प्रश्न देखें: http://stackoverflow.com/faq। – ForceMagic

संबंधित मुद्दे

 संबंधित मुद्दे