10

क्या बटन क्लिक पर टेक्स्ट व्यू से जुड़े प्रासंगिक एक्शन बार को प्रोग्रामेटिक रूप से प्रारंभ करने का कोई तरीका है? इसमें प्रतिलिपि के डिफ़ॉल्ट विकल्प भी शामिल होना चाहिए/सभी को भी चुनें। असल में, मैं अपने टेक्स्ट व्यू में चयन हैंडल दिखाना चाहता हूं और एंड्रॉइड डिफ़ॉल्ट प्रतिलिपि/बटन क्लिक पर एक्शन बार में सभी विकल्प चुनना चाहता हूं (लंबी क्लिक/डबल टैप के बजाय)।डिफ़ॉल्ट दृश्य प्रतिलिपि के साथ प्रोग्राम दृश्य रूप से पाठ दृश्य के लिए प्रासंगिक कार्रवाई बार कैसे प्रारंभ करें और सभी का चयन करें?

मैंने अभी तक क्या प्रयास किया: सेट कस्टमस्टेशन मोडकॉलबैक() एपीआई का उपयोग करने का प्रयास किया, लेकिन यहां समस्या है, उपयोगकर्ता को सीएबी के लिए टेक्स्ट व्यू को लंबे समय तक दबाए/डबल क्लिक करने की आवश्यकता है। startActionMode() api का उपयोग करने का प्रयास किया, लेकिन डिफ़ॉल्ट आइटम को बनाए रखने का कोई तरीका नहीं मिला .. यह सिर्फ एक नया खाली सीएबी खोलता है .. मुझे पता है, मैं अपनी कस्टम प्रतिलिपि जोड़ सकता हूं- सभी कोड का चयन कर सकता हूं और इस खाली सीएबी का उपयोग कर सकता हूं, लेकिन मैं इसे डिफ़ॉल्ट रूप से प्रबंधित करने के बजाय एक प्रदान किए गए डिफ़ॉल्ट एंड्रॉइड का उपयोग करना चाहता हूं।

संपादित करें; मैं EditText का उपयोग नहीं कर सकता। दृश्य को केवल टेक्स्टव्यू होना चाहिए और लंबे क्लिक को अक्षम कर दिया जाएगा। मैं TextView चयन के रूप में सेट करके सब से ऊपर परिवर्तन कर रहा हूँ

+0

आप TextView या Edittext में यह चाहते हैं। –

+0

जब आप टेक्स्ट को चयन योग्य के रूप में सेट करते हैं, तो लंबे क्लिक को पूर्ण रूप से सक्षम किया जाएगा। – Simas

उत्तर

2

अपने पाठ मैन्युअल का चयन करें और फिर एक लंबे क्लिक करते हैं:

textView.post(new Runnable() { 
    @Override 
    public void run() { 
     Selection.selectAll((Spannable) tv.getText()); 
     tv.performLongClick(); 
    } 
}); 

संपादित करें:

समस्या यह है कि निर्मित टेक्स्ट चयन सीएबी निजी है और कई निजी कक्षाओं का उपयोग करता है। आपको इसका उपयोग करने के लिए प्रतिबिंब के साथ बहुत सारे कोड की प्रतिलिपि बनाने या तरीकों का एक समूह तक पहुंचने की आवश्यकता होगी।

आप अपना स्वयं का सीएबी मेनू बना सकते हैं लेकिन आपको नियंत्रक हैंडल की भी आवश्यकता होगी जो कि फिर से बहुत सारे कोड हैं।

आपके पास जो कुछ है उसके साथ रहना और मेरे ऊपर सुझाए गए विधि का उपयोग करना एक साधारण समाधान होगा। आप अपने लंबे क्लिक श्रोता बुला से बचना चाहते हैं, जबकि टैक्सी बुला आप इसे हटा सकते हैं:

Selection.selectAll((Spannable) tv.getText()); 
tv.setOnLongClickListener(null); 
tv.performLongClick(); 
tv.setOnLongClickListener(mLongClickListener); 
+0

जैसा कि मैंने कहा, मैं लंबे क्लिक का उपयोग करने में सक्षम नहीं हूं, क्योंकि यह ओवरराइड है और मेनू दिखाने के लिए उपयोग किया जाता है। – afadfadf

+0

@noone ने यहां क्या हो रहा है, इस बारे में थोड़ा और विवरण देने के लिए मेरा उत्तर अपडेट किया। मौजूदा ऑनलॉन्गक्लिक लिस्टर के लिए भी एक समाधान। – Simas

+0

यह मेरे उपयोग के मामले के अनुरूप नहीं है, लेकिन मुझे लगता है कि यह मेरे द्वारा कैब लाइफसाइकिल लिखने और प्रबंधित करने के अलावा अन्य जाने का एकमात्र तरीका है। इसलिए सही उत्तर के रूप में चिह्नित - – afadfadf

1

अगर आप अपने पाठ देखें में पाठ का चयन करने के लिए की तुलना में वहाँ कई दृष्टिकोण है कि आप का पालन कर सकते हैं चाहता हूँ। पहली चीज जो आप कर सकते हैं, टेक्स्टव्यू के एक्सएमएल गुण सेट करें।

android:textIsSelectable = "true" 

txtView.setTextIsSelectable(true) 

textIsSelectable झंडा उपयोगकर्ताओं TextView, जो बारी में प्रणाली की अंतर्निहित कॉपी/पेस्ट नियंत्रण से चलाता में चयन इशारों बनाने के लिए अनुमति देता है।

या

android:selectAllOnFocus = true; 
setSelectAllOnFocus(boolean) 

पाठ चयन है, तो यह सभी का चयन करें जब दृश्य ध्यान केंद्रित लेता है। और आप अपने बटन के क्लिक पर फोकस सेट कर सकते हैं। RequestFocus() विधि का उपयोग कर। अधिक जानकारी के लिए

आप इस लिंक का संदर्भ दे सकते हैं। आपको अपना पूरा काम पूरा हो जाएगा। http://developer.android.com/reference/android/widget/TextView.html[http://developer.android.com/reference/android/widget/TextView.html][1]

धन्यवाद

+0

मुझे खेद है कि मुझे आपका जवाब भी नहीं मिला। :) – afadfadf

+0

उपरोक्त उत्तर आपको edittext –

+0

से टेक्स्ट का चयन या प्रतिलिपि बनाने में मदद करता है कृपया प्रश्न पढ़ें। इसका टेक्स्ट व्यू, संपादन नहीं है और मेरे उपयोग के मामले में मैंने स्पष्ट रूप से उल्लेख किया है कि आपने – afadfadf

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