2013-05-16 88 views
7

目前我正忙於爲我公司的WHMCS應用程序。作爲導航,我想在操作欄中使用Tab功能。Android Actionbar設置標籤的寬度

但是,你怎麼能編輯選項卡的寬度是多少?我需要在一個屏幕上一起使用5,而不需要滾動。我已經有一些像這樣的風格嘗試過:

<style name="AppBaseTheme" parent="android:Theme.Light"> 
</style> 

<style name="AppTheme" parent="AppBaseTheme"> 
    <item name="@android:attr/actionBarTabStyle">@style/tab_nav</item> 
    <item name="android:actionBarTabTextStyle">@style/actionBarTabTextStyle</item> 
</style> 

<style name="actionBarTabTextStyle" parent="android:Widget.Holo.Light.ActionBar.TabText.Inverse"> 
    <item name="android:padding">1dp</item> 
</style> 

<style name="tab_nav" parent="android:style/Widget.Holo.Light.Tab"> 
<item name="android:paddingLeft">-25dp</item> 
</style> 

<style name="CustomTabTextStyle" parent="@android:style/TextAppearance.Holo"> 
    <item name="android:textColor">#2456c2</item> 
</style> 

然而,寬度不會蝦使用更高負值時。

+0

嗨,大家好,你解決了你的問題嗎?請發佈解決方案,因爲我有同樣的問題。謝謝 –

回答

3

嗨,我想這可能會幫助你...這個代碼實際上是使綁定到屏幕寬度的動作條,所以如果你需要「5一起上的標籤會自行調整=)

private void setTabsMaxWidth() { 
    DisplayMetrics displaymetrics = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); 
    int screenWidth = displaymetrics.widthPixels; 
    final ActionBar actionBar = getActionBar(); 
    final View tabView = actionBar.getTabAt(0).getCustomView(); 
    final View tabContainerView = (View) tabView.getParent(); 
    final int tabPadding = tabContainerView.getPaddingLeft() + tabContainerView.getPaddingRight(); 
    final int tabs = actionBar.getTabCount(); 
    for(int i=0 ; i < tabs ; i++) { 
     View tab = actionBar.getTabAt(i).getCustomView(); 
     TextView text1 = (TextView) tab.findViewById(R.id.text1); 
     text1.setMaxWidth(screenWidth/tabs-tabPadding-1); 
    } 
} 
+0

這樣做的工作,結合[這](http://stackoverflow.com/questions/20039817/change-tab-width-in-actionbar-tab)使標籤都可見一次(我有6),但我無法弄清楚如何在短暫的時間內刪除額外的填充,因此我的圖標非常小。 – craned

0

一個屏幕無需滾動「在版面頂部更好地使用TabHost