2013-05-16 5 views
7

Obecnie jestem zajęty aplikacją WHMCS dla mojej firmy. Jako nawigacja chcę użyć funkcji Tab na pasku akcji.Android Actionbar ustaw szerokość na zakładki

Jednak, jak można zmieniać szerokość karcie? Potrzebuję 5 razem na jednym ekranie bez potrzeby przewijania. Próbowałem już go z pewnymi stylami, jak to:

<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> 

Jednak szerokość krewetek nie będzie przy użyciu wyższą wartość ujemną.

+0

Witajcie, czy rozwiązaliście swój problem? Opublikuj rozwiązanie, ponieważ mam ten sam problem. Dzięki –

Odpowiedz

3

Cześć Myślę, że może to pomóc ... Ten kod jest faktycznie dokonywania actionbar związany szerokości ekranu, więc klapki dostosuje przez siebie =)

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

To działa, w połączeniu z [this] (http://stackoverflow.com/questions/20039817/change-tab-width-in-actionbar-tab), aby tabulacje były widoczne od razu (mam 6), ale nie mogłem wymyślić, jak usunąć dodatkowe dopełnienie w krótkim czasie spędzonym na nim, więc moje ikony są dość małe. – craned

0

Jeśli potrzebujesz „5 razem na jeden ekran bez potrzeby przewijania "lepiej użyć TabHost w górnej części układu.