2012-07-22 11 views
18

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

तो सवाल यह है कि, क्या मैं कोड से android:uiOptions="splitActionBarWhenNarrow" सेट कर सकता हूं, बजाय इसे मैनिफेस्ट में हार्डकोड करने के बजाय?

पीएस: मैं एक्शनबार शेरलॉक का उपयोग कर रहा हूं।

उत्तर

23

स्थानीय कार्यवाही बार विभाजित मोड में सेट किया जा सकता:

AnActionModeOfEpicPropotions ActionMode.Callback के एक कार्यान्वयन है।

एक्शनबैरशॉक के साथ सेट किए जाने के बाद विंडो यूआई विकल्प को पढ़ा नहीं जा सकता है, आपको getSherlock().setUiOptions(...) पर कॉल करना होगा। आपको दोनों को कॉल करने की ज़रूरत नहीं है। उपयुक्त होने पर एबीएस स्वचालित रूप से ऊपर कॉल करेगा।

यह सजावट दृश्य बनने से पहले किया जाना चाहिए। इस कॉल को यह सुनिश्चित करने के लिए सबसे सुरक्षित स्थान यह सुनिश्चित करने के लिए कि हमेशा होता है onCreate विधि से पहले आप super.onCreate पर कॉल करते हैं।

+0

धन्यवाद, जो मेरे प्रश्न का उत्तर देता है! दुर्भाग्य से यह एक मौजूदा गतिविधि पर विभाजन/कोई विभाजन मोड स्वैप करने के लिए उचित रूप में असंभव है। मुझे लगता है मैं एक विवरण गतिविधि कि विभाजन कार्रवाई बार तो होगा बनाएंगे, जिसमें समझ में आता है वैसे भी मुझे लगता है कि :-) –

+0

getSherlock() कार्य क्या है? – tasomaniac

+0

@tasomaniac यह एक्शनबारशेलॉक का हिस्सा है जिसे ओपी अपने प्रश्न में संदर्भित करता है। –

3

एक्शनबैरशॉक नमूने, स्प्लिटएक्शनमोड्स.जावा पर एक नज़र डालें।

कॉल इस विभाजन ActionBar को दिखाने के लिए:

mMode = startActionMode(new AnActionModeOfEpicProportions()); 

mMode ActionMode के प्रकार है इस उदाहरण है, जब बटन 'प्रारंभ करें' दबाया जाता है, एक विभाजन कार्रवाई बार स्क्रीन के नीचे में दिखाई देता है और जब आप एक्शन बार को दूर जाना चाहते हैं तो आपको उस पर 'फिनिश()' कॉल करने की आवश्यकता है। getWindow().setUiOptions(ActivityInfo.UIOPTION_SPLIT_ACTION_BAR_WHEN_NARROW) फोन करके

private final class AnActionModeOfEpicProportions implements ActionMode.Callback { 
    @Override 
    public boolean onCreateActionMode(ActionMode mode, Menu menu) { 
     // add your menu here... 
    } 

    @Override 
    public boolean onActionItemClicked(ActionMode mode, MenuItem item) { 
     // handles your action menu clicked event 
     return true; 
    } 
} 
-2
private final class AnActionModeOfEpicProportions implements ActionMode.Callback 
{ 
    @Override 
    public boolean onCreateActionMode(ActionMode mode,Menu menu) 
    { 
    // add your menu here... 
    } 
    @Override 
    public boolean onActionItemClicked(ActionMode mode,MenuItem item) 
    { 
    // handles your action menu clicked event 
    returntrue; 
    } 
} 
+2

अपने कोड फ़ॉर्मेट करें और कुछ स्पष्टीकरण जोड़ने में। –

0

मैं बस कोशिश कर रहा था कि क्या मैं एक गतिविधि में एक्शनबार और दूसरे में एक स्प्लिट कर सकता हूं।

मैं दोनों गतिविधियों में onCreateOptionsMenu में कार्रवाई बार जोड़ा गया है और ( GetWindow जोड़ा) setUiOptions (ActivityInfo.UIOPTION_SPLIT_ACTION_BAR_WHEN_NARROW)।

गतिविधि से पहले मैं स्प्लिट एक्शन चाहता था और यह आश्चर्यचकित हुआ कि यह काम करता था। :)

फिर मैंने बटन क्लिक पर स्प्लिट एक्शन बार को छिपाने के लिए getActionBar() छुपाएं() छुपाया और यह भी काम किया।

मुझे लगता है कि यदि आप इसे आजमा सकते हैं, तो आप यह काम कर सकते हैं और अपनी जरूरत के अनुसार अनुकूलित कर सकते हैं। शुरुआत में और इसे छिपाने पर इसे क्लिक करें और आवश्यक कार्यों को फिर से छुपाए जाने के बाद। (केवल एक चीज मैं याद किया समर्थन लाइब्रेरी के साथ इस जाँच कर रहा है। क्या करना है और आप अद्यतन करेगा)

आशा, इस किसी तरह से आपकी मदद कर सकता है। हैप्पी कोडिंग :)

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