5

में टैब का बल पतन ActionBarSherlock लाइब्रेरी का उपयोग करके मैं एक एंड्रॉइड एप्लिकेशन विकसित कर रहा हूं। एक गतिविधि में, मैं संकुचित ActionBar (नीचे कार्रवाई आइटम) के साथ संयोजन में एक टैबड नेविगेशन का उपयोग करता हूं।एक्शनबार

इस तस्वीर में आप को अपने वर्तमान स्थिति में देख सकते हैं: टैब को दूसरी पंक्ति में धक्का दिया जा रहा है।

Current ActionBar


निम्न चित्र में आप Activity तरह से मैं यह होना चाहता हूँ देख सकते हैं: टैब, शीर्ष पंक्ति में होना चाहिए एक दूसरी पंक्ति में नहीं। मैंने पहले से ही ActionBar और ActionBarSherlock दस्तावेज पढ़े हैं, लेकिन इस व्यवहार को बल देने के लिए कोई रास्ता नहीं मिला है।

The wished ActionBar layout

यह वर्तमान कोड, ActionBar बनाने के लिए इस्तेमाल होता है।

public class AdminActivity extends SherlockFragmentActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_admin); 

    ActionBar actionBar = getSupportActionBar(); 
    actionBar.setDisplayHomeAsUpEnabled(true); 
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 

    ActionBar.Tab itemsTab = actionBar.newTab().setText(R.string.label_tab_items); 
    ActionBar.Tab usersTab = actionBar.newTab().setText(R.string.label_tab_users); 

    actionBar.addTab(itemsTab); 
    actionBar.addTab(usersTab); 
} 

कोई विचार?

+1

आपका शीर्षक "को रोकने" कहते हैं, लेकिन आपके सवाल का पता चलता है कि, वास्तव में, आप '' Tabs' ActionBar' में संक्षिप्त करने के लिए चाहते हैं। – adneal

+0

मैंने इसे सही किया, धन्यवाद! – damaxxed

उत्तर

5

ऐसा करने के लिए एक प्रतिबिंब 'हैक' है। मैं समाधान के लिए कोई श्रेय नहीं लेता, जिसे मैंने इस स्टैक ओवरफ्लो प्रश्न replicate ActionBar Tab(s) with custom view में पाया।

//pre-ICS 
if (actionBarSherlock instanceof ActionBarImpl) { 
    enableEmbeddedTabs(actionBarSherlock); 

//ICS and forward 
} else if (actionBarSherlock instanceof ActionBarWrapper) { 
    try { 
     Field actionBarField = actionBarSherlock.getClass().getDeclaredField("mActionBar"); 
     actionBarField.setAccessible(true); 
     enableEmbeddedTabs(actionBarField.get(actionBarSherlock)); 
    } catch (Exception e) { 
     Log.e(TAG, "Error enabling embedded tabs", e); 
    } 
} 

//helper method 
private void enableEmbeddedTabs(Object actionBar) { 
    try { 
     Method setHasEmbeddedTabsMethod = actionBar.getClass().getDeclaredMethod("setHasEmbeddedTabs", boolean.class); 
     setHasEmbeddedTabsMethod.setAccessible(true); 
     setHasEmbeddedTabsMethod.invoke(actionBar, true); 
    } catch (Exception e) { 
     Log.e(TAG, "Error marking actionbar embedded", e); 
    } 
} 

भी इस ब्लॉग पोस्ट देखें: http://sparetimedev.blogspot.co.uk/2012/11/forcing-embedded-tabs-in-actionbar.html

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