2012-03-13 12 views
5

मैं एंड्रॉइड सॉफ्ट कीबोर्ड पर काम कर रहा हूं और सोच रहा था, कीबोर्ड के वर्तमान कर्सर की स्थिति पाने का कोई तरीका है? मैं वर्तमान में निम्नलिखित कोड का उपयोग कर रहा:कर्सर स्थिति एंड्रॉइड कीबोर्ड प्राप्त करें

connection.getTextBeforeCursor(Integer.MAX_VALUE, 0).length() 

बहरहाल, यह बहुत धीमी गति से (यहां तक ​​कि पाठ की एक छोटी राशि के लिए है, यह 50ms तक का समय लग सकता है - एक आकाशगंगा नेक्सस पर चल रहा है, तो यह संभावना भी होगा निचले अंत फोन के लिए धीमी)। मैंने इसे एक Droid Incredible पर भी परीक्षण किया है, और अंतराल और भी गंभीर है।

Update चयन पर फ़ंक्शन में, आपको नई कर्सर स्थिति दी जाती है। हालांकि, इस फ़ंक्शन को हमेशा कॉल नहीं किया जाता है और इसलिए भविष्य के उपयोग के लिए प्रदान किए गए मूल्य को संग्रहीत करना विश्वसनीय नहीं है।

चूंकि आप कर्सर की स्थिति सेट कर सकते हैं और चयनित टेक्स्ट प्राप्त कर सकते हैं (लेकिन चयनित पाठ की स्थिति नहीं), कर्सर की स्थिति प्राप्त करने के लिए कोई फ़ंक्शन नहीं होना चाहिए?

सहायता के लिए धन्यवाद!

उत्तर

4

यह एक पुराना सवाल है, लेकिन मैं हाल ही में एक ही समस्या में भाग गया। कर्सर की स्थिति प्राप्त करने के लिए:

InputConnection ic = getCurrentInputConnection(); 
ExtractedText et = ic.getExtractedText(new ExtractedTextRequest(), 0); 
int selectionStart = et.selectionStart; 
int selectionEnd = et.selectionEnd; 
+0

ऐसा लगता है कि यह चयनित टेक्स्ट पर काम कर रहा है। प्रश्न चयन के बिना पाठ में केवल एक सामान्य कर्सर के बारे में प्रतीत होता है। क्या यह कोड इस मामले में काम करता है? –

+0

हां, उस स्थिति में, चयन स्टार्ट और चयन अंत के साथ अंत। –