2012-11-28 18 views
6

मुझे पता है कि कई एक्शनबार प्रश्न हैं लेकिन वे मेरी समस्या का समाधान नहीं कर रहे हैं। मैं अपने एमुलेटर में एक्शनबार को थूकने में सक्षम हूं, लेकिन जब मैं अपने डिवाइस (नेक्सस 7 पोर्ट्रेट मोड) पर अपना प्रोग्राम चलाता हूं तो एक्शनबार विभाजित नहीं होगा। शीर्ष पर सभी आइकन 'ढेर ऊपर', यहां तक ​​कि मेरे टैब एक ड्रॉप डाउन सूची बनाते हैं। मैंने मेनू आइटम नामों को बहुत लंबा बनाकर इस मुद्दे को मजबूर करने का प्रयास किया है और मैंने उन्हें सेट किया है: एंड्रॉइड: showAsAction = "always | withText"। बस यह सुनिश्चित करने के लिए, मैंने नमूना कोड लिया है, इसे एमुलेटर पर चलाया है जो इसे देखता है और फिर इसे मेरे डिवाइस पर रखता है।एंड्रॉइड एक्शनबार डिवाइस पर विभाजित नहीं होगा

<uses-sdk 
    android:minSdkVersion="14" 
    android:targetSdkVersion="15" /> 

<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/MyTheme"> 
    <activity 
     android:name=".MainActivity" 
     android:uiOptions="splitActionBarWhenNarrow" 
     android:label="@string/title_activity_main"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

मैं वेब में घूमते है, लेकिन एक समाधान नहीं मिल सकता है: यहाँ मेरी प्रकट है। किसी भी मदद की सराहना की है।

+0

मुझे एक ही समस्या है। मैंने कहीं पढ़ा है कि 'splitActionBar' केवल टैबलेट पर लागू होता है, लेकिन मुझे उम्मीद है कि यह एक मिथक है ... – Ridcully

उत्तर

7

this SO item के अनुसार, एक्शनबार केवल तभी विभाजित होता है जब उपलब्ध चौड़ाई 480 डीपी से कम हो। Google के डियान हैकबर्न के this article के अनुसार, नेक्सस 7 की पोर्ट्रेट चौड़ाई 600 डीपी है। तो यही कारण है कि कोई विभाजन नहीं है।

मैं आपसे सहमत हूं कि विभाजन को उपलब्ध स्थान और वस्तुओं के बीच संबंधों पर निर्भर होना चाहिए, न केवल उपलब्ध स्थान पर।

+0

दुर्भाग्य से, इसे खोदने के लिए धन्यवाद। मुझे आश्चर्य है कि यह मामला है। –

7

मैं जानता हूँ कि इस सवाल का बहुत पुराना है, लेकिन मैं नेक्सस 7 (और संभव अन्य उपकरणों) पर स्थित बटन को ActionBar मजबूर करने के लिए एक रास्ता मिल गया है और मैंने सोचा था कि मैं अपने समाधान का हिस्सा हैं:

प्लेस अपनी गतिविधि में इस कोड:

/** 
* {@inheritDoc} 
*/ 
@Override 
public Resources getResources() { 
    return new ResourceFix(super.getResources()); 
} 

private class ResourceFix extends Resources { 
    private int targetId = 0; 

    ResourceFix(Resources resources) { 
     super(resources.getAssets(), resources.getDisplayMetrics(), resources.getConfiguration()); 
     targetId = Resources.getSystem().getIdentifier("split_action_bar_is_narrow", "bool", "android"); 
    } 

    /** 
    * {@inheritDoc} 
    */ 
    @Override 
    public boolean getBoolean(int id) throws Resources.NotFoundException { 
     return targetId == id || super.getBoolean(id); 
    } 
} 

यह सच करने के लिए आंतरिक "split_action_bar_is_narrow" मूल्य के लिए बाध्य करेगा। यह ऐसा करने का सबसे अच्छा तरीका नहीं हो सकता है लेकिन ऐसा लगता है कि मुझे एकमात्र रास्ता मिल गया है।

+1

अच्छा हैक। उम्मीद है कि यह कुछ दृश्यता प्राप्त करता है। यह एक आम प्रश्न है – dinigo

+0

अविश्वसनीय। बहुत बढ़िया! –

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