2010-08-18 18 views
5

में टेक्स्ट दर्ज कर सकता है। मैं सोच रहा हूं कि मैं नीचे दिए गए स्क्रीनशॉट में एक कस्टम पॉप-अप कैसे बना सकता हूं (स्वाइप से उधार लिया गया कीबोर्ड), जहां मेरे पास कुछ बटन हो सकते हैं, जो प्रत्येक वर्तमान में "कनेक्ट" TextView (InputConnection के माध्यम से) को स्ट्रिंग करते हैं।एंड्रॉइड आईएमई: एक कस्टम पॉप-अप संवाद (जैसे स्वाइप कीबोर्ड) दिखा रहा है जो टेक्स्ट व्यू

कृपया ध्यान दें: यह एक InputMethodService और नहीं एक साधारण Activity है। मैंने Theme:Dialog के साथ एक अलग Activity लॉन्च करने का प्रयास किया है। हालांकि, जैसे ही वह खुलता है, मैं TextView के साथ अपना ध्यान खो देता हूं और मेरा कीबोर्ड गायब हो जाता है (और उसके साथ मेरा InputConnection चला गया है)।

Swype

उत्तर

2

आप एक PopupWindow उपयोग करने का प्रयास कर सकते हैं। आपको जो कुछ भी चाहिए वह करने के लिए आपको कुछ हैकिंग करना होगा और इसके लिए एकमात्र अच्छा दस्तावेज स्रोत है।

+0

कूल। संकेत के लिए धन्यवाद। मैं पहले से ही एंड्रॉइड के कीबोर्ड स्रोत कोड से गुजर रहा हूं, इसलिए मैं इसका काफी उपयोग कर रहा हूं :-) – znq

+0

@znq, क्या आप वास्तव में ऐसा करने में कामयाब रहे? क्या आपने 'पॉपअपविंडो' या कुछ और का उपयोग कर समाप्त किया था? क्या आप पॉइंटर्स प्रदान कर सकते हैं? –

+0

अपने कीबोर्ड दृश्य उपclass में पॉपअपविंडो बनाने के लिए महत्वपूर्ण है, इनपुट इनपुट विधि या कहीं और नहीं। यदि आप कीबोर्ड के ऊपर दिखाना चाहते हैं तो नकारात्मक वाई स्थिति का उपयोग करें। –

1

शांति जो लोग मार्गदर्शन का पालन पर हो,

समाधान:

AlertDialog dialog; 

//add this to your code 
dialog = builder.create(); 
Window window = dialog.getWindow(); 

WindowManager.LayoutParams lp = window.getAttributes(); 
lp.token = mInputView.getWindowToken(); 
lp.type = WindowManager.LayoutParams.TYPE_APPLICATION_ATTACHED_DIALOG; 

window.setAttributes(lp); 
window.addFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM); 
//end addons 

dialog.show(); 

===== अद्यतन 2015/09/30 mInputView अपने कीबोर्ड वर्ग की अपनी सामान्य नाम ..see

@Override 
    public View onCreateInputView() { 
     mInputView =(MyKeyboardView) getLayoutInflater().inflate(R.layout.input, null); 
.... 
} 

और जानकारी: http://developer.android.com/guide/topics/text/creating-input-method.html

शुभकामनाएँ।

+1

mInputView क्या है? – Blundell

+0

अलर्ट क्या है? –

1

मैं भी इस समस्या के खिलाफ अपने सिर पर टक्कर लगी थी और अंततः मुझे यह पता चला। उपर्युक्त समाधान सही हैं हालांकि जैसा कि आपने बताया है कि इन्हें इनपुट इनपुट विधि से उपयोग नहीं किया जा सकता है क्योंकि यह गतिविधि नहीं है। यह चाल PopupWindow को कीबोर्ड व्यू के उप-वर्ग में बनाना है। एक नकारात्मक वाई स्थिति का उपयोग करके, पॉपअपविंडो कीबोर्ड जैसे कीबोर्ड से ऊपर दिखाई दे सकता है।

गुड लक, बैरी

+0

मैं कुछ कोड चाहता हूं इसे कैसे देखें –

1

सही जवाब:

  1. एक PopupWindow बनाएं और इसके अंदर
  2. कॉल popupWindow.setClippingEnabled(false)
  3. कॉल [popupWindow.showAtLocation()] (http://developer.android.com/reference/android/widget/PopupWindow.html#showAtLocation(android.view.View आपके विचार रखा, int, int, int)) एक नकारात्मक वाई समन्वय के साथ।

यह आपके स्क्रीनशॉट में आईएमई के ऊपर अपना पॉपअप दिखाएगा।

+0

यह निश्चित रूप से सही उत्तर है! यहां वोटों की आवश्यकता है ... – mehmet6parmak

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