2012-01-15 10 views
8

ActionBar के साथ आरंभ करना ...MenuItem.SHOW_AS_ACTION_IF_ROOM कैसे काम करता है?

MenuItem.SHOW_AS_ACTION_IF_ROOM के लिए प्रलेखन कहते हैं:

दिखाएँ एक क्रिया बार में एक बटन के रूप में इस मद अगर प्रणाली का फैसला करता है इसके लिए जगह नहीं है।

मेरा सवाल यह है कि सिस्टम कैसे तय करता है कि कोई कमरा है, और क्या मैं उस निर्णय को प्रभावित/ट्विक कर सकता हूं?

मेरे मामले में, मेरे पास कुछ मेनू आइटम हैं जो कार्रवाई बटन के रूप में दिखाने के लिए उपयुक्त होंगे - यदि पर्याप्त कमरा है। छोटी स्क्रीन पर वे एक्शनबार के शीर्षक को लंबित बनाने के लिए पर्याप्त जगह लेते हैं। मैं शीर्षक को अस्पष्ट करने के बजाय, इस मामले में कार्रवाई ओवरफ़्लो में जाना पसंद करूंगा।

पीएस। मैं एक्शनबैरशेलॉक का उपयोग कर रहा हूं और अगर मूल एक्शनबार बिल्कुल वैसा ही काम करता है तो जांच नहीं की है। यदि मूल एक्शनबार "if-room" एक्शन आइटम को शीर्षक को बहुत कम करने की अनुमति नहीं देता है, तो शांत, मैं एक्शनबैरशेलॉक में एक बग की तलाश करूंगा।

उत्तर

1

मैं एक्शनबैरशॉक उपयोगकर्ता हूं, मैं आपको जवाब के लिए व्हार्टन के स्रोत ब्राउज़ करने का सुझाव दे सकता हूं।

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

बेसमेनू प्रतिनिधि वर्ग में, यदि मैं अपनी याददाश्त पर भरोसा कर सकता हूं, तो आप उसका तर्क देख सकते हैं।

+0

तर्क एक्शनमेनू प्रेजेंटर क्लास प्रतीत होता है: एक्शन आइटम आधा क्षैतिज स्थान नहीं ले सकते हैं, और स्क्रीन चौड़ाई के आधार पर अधिकतम संख्या भी सीमित है। और फिर असाधारण मामले हैं .... –

+0

हां, यदि आप हमेशा के लिए सभी मेनू शोएस्क्शन झंडे रखते हैं, तो वे सभी एक्शनबार में दिखाई देंगे, मैंने बेसमेनू प्रेजेंटर क्लास में अद्यतन मेनू विधि के स्मार्ट ओवरराइडिंग द्वारा उस समस्या को हल किया है। – Orest

+0

actionbarsherlock 4.0 बीटा के लिए जांचें, मुझे लगता है कि यह आपकी समस्या का समाधान करेगा – Orest

4

ठीक है, यह पता लगाने के लिए बहुत कठिन नहीं था, तर्क है ActionMenuPresenter.java

में ऐसा नहीं है कि प्रतीत होता है:

  • कार्रवाई बटन क्षैतिज स्थान
  • के आधे से अधिक लेने के लिए अनुमति नहीं है
  • स्क्रीन चौड़ाई (R.integer.abs__max_action_buttons)
  • पर आधारित क्रिया बटनों की संख्या भी सीमित है, यदि क्रियाएं समान समूह से संबंधित हैं तो संख्यात्मक सीमा तोड़ दी जा सकती है, चौड़ाई सीमा नहीं कर सकती - यदि कोई समूह चौड़ाई लिमी तोड़ता है टी, पूरा समूह अतिप्रवाह में चला जाता है।
8

आधिकारिक Android डिजाइन गाइड (http://developer.android.com/design/patterns/actionbar.html) के अनुसार:

कार्रवाई बार क्षमता निम्नलिखित नियमों द्वारा नियंत्रित किया जाता:

मुख्य क्रिया बार में
  • कार्रवाई बटन अधिक पर कब्जा नहीं कर सकते बार की चौड़ाई के 50% से अधिक। नीचे एक्शन बार पर एक्शन बटन पूरी चौड़ाई का उपयोग कर सकते हैं।
  • घनत्व स्वतंत्र पिक्सल (डीपी) आइटम है कि मुख्य क्रिया बार में फिट होगा की संख्या का निर्धारण में स्क्रीन की चौड़ाई:
    • से छोटी 360 डी पी = 2 माउस
    • 360-499 डी पी = 3 प्रतीक
    • 500-599 डी पी = 4 माउस
    • 600 डी पी और बड़ा = 5 माउस
संबंधित मुद्दे