2010-10-17 30 views
8

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

मैं onPrepareOptionsMenu में मेनू को साफ़ और पुन: प्रयास कर रहा हूं (जैसा कि मुझे इसे वर्तमान गतिविधि स्थिति में समायोजित करना है)।

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

public boolean onPrepareOptionsMenu(Menu menu){ 
    menu.clear(); 

    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.my_menu, menu); 

    return true; 
} 
+2

क्या आप इस समाधान का समाधान ढूंढ पाए थे? – dropsOfJupiter

+1

क्या आप समस्या को पुन: पेश करने के लिए कोड पोस्ट कर सकते हैं? मैं आपके लिए इसे देखकर खुश रहूंगा। यह एक दिलचस्प समस्या है। –

उत्तर

0

एक बार जब आप ट्रैकबॉल का उपयोग (या वास्तव में कीबोर्ड पर किसी अन्य कुंजी दबाते हैं), तो आपको touch mode से बाहर निकलें। उस बिंदु से, कुछ दृश्य होंगे जो ध्यान केंद्रित करते हैं (आप इसे Activity.getCurrentFocus() पर कॉल करके देख सकते हैं)। यह मोड तब तक जारी रहता है जब तक कि आप स्क्रीन को फिर से स्पर्श न करें, उस बिंदु पर आप टच मोड दोबारा दर्ज करेंगे और जब आप बाद के अवसरों पर मेनू खोलेंगे तो एक केंद्रित आइटम नहीं होगा। यह मेनू के साथ देखे गए प्रत्येक एकल एंड्रॉइड एप्लिकेशन में होता है।

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

जब तक आपको प्रोग्रामेटिक रूप से कोई रास्ता नहीं मिल जाता है, तो विश्वसनीय रूप से टच मोड दर्ज करें या सभी दृश्यों से फोकस हटाने के लिए (View.clearFocus() पर कॉल करने से बस इसे किसी अन्य दृश्य में भेज दिया जाता है!), यह आपकी सबसे अच्छी शर्त हो सकती है।

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