2014-11-13 6 views
0

Я пытаюсь установить цвет Android вкладки текст, делая это в моем style.xml:Android Изменение цвета текста Tab

<resources xmlns:android="http://schemas.android.com/apk/res/android"> 

<!-- Application theme. --> 
<style name="AppTheme" parent="AppBaseTheme"> 
    <!-- All customizations that are NOT specific to a particular API-level can go here. --> 
    <item name="android:actionBarStyle">@style/ActionBarStyle</item> 
</style> 

<style name="ActionBarStyle" parent="android:style/Widget.Holo.Light.ActionBar"> 
    <item name="android:background">#FFFFFF</item> 
    <item name="android:titleTextStyle">@style/myTheme.ActionBar.Text</item> 
    <item name="android:textStyle">bold</item> 
    <item name="android:textSize">16sp</item> 
</style> 

<style name="myTheme.ActionBar.Text" parent="@android:style/TextAppearance"> 
    <item name="android:textColor">#000000</item> 
</style> 

И мой взгляд пейджера как таковой:

<android.support.v4.view.ViewPager 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/pager" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:textColor="#000000"/> 

Однако с этими кодами мне удалось изменить цвет фона вкладки пейджера представления на белый, но текст также белого цвета. Интересно, почему часть, где я установил цвет текста для панели действий, не работает.

Заранее спасибо.

EDIT

И та часть, где я могу установить вид пейджера:

public class EventDetailMain extends FragmentActivity { 
Context context = this; 

ViewPager Tab; 
EventDtlTabPagerAdapter TabAdapter; 
ActionBar actionBar; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.event_detail_main); 
    TabAdapter = new EventDtlTabPagerAdapter(getSupportFragmentManager()); 
    Tab = (ViewPager) findViewById(R.id.pager); 
    Tab.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { 
     @Override 
     public void onPageSelected(int position) { 
      actionBar = getActionBar(); 
      actionBar.setSelectedNavigationItem(position); 
     } 
    }); 
    Tab.setAdapter(TabAdapter); 
    actionBar = getActionBar(); 
    // Enable Tabs on Action Bar 
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
    ActionBar.TabListener tabListener = new ActionBar.TabListener() { 
     public void onTabReselected(android.app.ActionBar.Tab tab, 
       android.app.FragmentTransaction ft) { 
     } 

     public void onTabSelected(android.app.ActionBar.Tab tab, 
       android.app.FragmentTransaction ft) { 
      // on tab selected show respected fragment view 
      Tab.setCurrentItem(tab.getPosition()); 
     } 

     public void onTabUnselected(android.app.ActionBar.Tab tab, 
       android.app.FragmentTransaction ft) { 
     } 
    }; 

    // Add New Tab 
    actionBar.addTab(actionBar.newTab().setText("Event Detail") 
      .setTabListener(tabListener)); 
    actionBar.addTab(actionBar.newTab().setText("Chat Room") 
      .setTabListener(tabListener)); 
    actionBar.addTab(actionBar.newTab().setText("Drop Review") 
      .setTabListener(tabListener)); 
} 
+0

Можете ли вы разместить свой AppBaseTheme им просто интересно, используете ли вы тему AppCompat или нет. – forcewill

+0

Извините, но где я могу получить AppBaseTheme? Потому что это мой стиль.xml –

ответ

0

Я считаю, что это стиль для текста вкладки попробовать это:

добавить вашу тему

<item name="android:actionBarTabTextStyle">@style/ActionBar.TabText</item> 

, а затем объявить Вкладка й стиль текста следующим образом

<style name="ActionBar.TabText" parent=""> 
     <item name="android:textColor">#888</item> 
    </style> 
+0

Нет, это не работает. Текст по-прежнему в белом –

+0

Любые идеи? Может быть, нужно настроить настройку цвета текста вкладки пейджера? –

0

Попробуйте это путем изменений родителя стиля в название ActionBar для темы:

<style name="myTheme.ActionBar.Text" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title"> 
    <item name="android:textColor">#000000</item> 
</style> 
+0

Нет, это не сработает :(Какой style.xml мне нужно изменить? Один из значений? –

+0

Любые идеи? Потому что текст белого цвета по-прежнему сохраняется –

+0

Вы заменили мой код на тот, который вы style.xml? это просто изменение родительского значения? @IWasSoLost – willedanielsson

1

OK вида Try на документах (http://developer.android.com/guide/topics/ui/actionbar.html):

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
<!-- the theme applied to the application or activity --> 
<style name="CustomActionBarTheme" 
     parent="@style/Theme.AppCompat.Light"> 
    <item name="android:actionBarStyle">@style/MyActionBar</item> 
<!--IMPORTANT FOR YOU --> 
    <item name="android:actionBarTabTextStyle">@style/TabTextStyle</item> 

    <item name="android:actionMenuTextColor">@color/actionbar_text</item> 

    <!-- Support library compatibility --> 
    <item name="actionBarStyle">@style/MyActionBar</item> 
    <item name="actionBarTabTextStyle">@style/TabTextStyle</item> 
    <item name="actionMenuTextColor">@color/actionbar_text</item> 
</style> 

<!-- general styles for the action bar --> 
<style name="MyActionBar" 
     parent="@style/Widget.AppCompat.ActionBar"> 
    <item name="android:titleTextStyle">@style/TitleTextStyle</item> 
    <item name="android:background">@drawable/actionbar_background</item> 
    <item name="android:backgroundStacked">@drawable/actionbar_background</item> 
    <item name="android:backgroundSplit">@drawable/actionbar_background</item> 

    <!-- Support library compatibility --> 
    <item name="titleTextStyle">@style/TitleTextStyle</item> 
    <item name="background">@drawable/actionbar_background</item> 
    <item name="backgroundStacked">@drawable/actionbar_background</item> 
    <item name="backgroundSplit">@drawable/actionbar_background</item> 
</style> 

<!-- action bar title text --> 
<style name="TitleTextStyle" 
     parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"> 
    <item name="android:textColor">@color/actionbar_text</item> 
</style> 

<!-- action bar tab text IMPORTANT FOR YOU --> 
<style name="TabTextStyle" 
     parent="@style/Widget.AppCompat.ActionBar.TabText"> 
    <item name="android:textColor">@color/actionbar_text</item> 
</style> 

+0

Так что в основном я должен следить за всеми четырьмя из них? Моя текущая вкладка показывает выбранную вкладку, но только то, что само слово остается белым, которое совпадает с цветом фона. –

+0

Попробуйте использовать свойство TitleTextStyle в редакции сообщения (сверху). Вторая часть в основном касается настройки индикатора табуляции (я пропустил интерпретацию вашего вопроса) –

+0

Нет, верхняя часть не работает. Мои тексты по-прежнему остаются белым цветом :( –

0

Допустим, у вас есть собственная тема:

<style name="TabTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <!-- Customize your theme here. --> 
    <item name="android:textColorPrimary">@color/colorPrimaryDark</item> 
    <item name="android:textColorSecondary">@color/colorPrimaryDark</item> 
</style> 

Пожалуйста, обратите внимание, что

parent="Theme.AppCompat.Light.DarkActionBar" 

может быть любая другая тема у вас уже есть, до тех пор, как он наследует от стандартного андроида темы. Я просто использовал DarkActionBar в качестве примера.

Атрибут android: textColorPrimary будет использоваться в качестве цвета текста выбранной вкладки, в то время как андроид: textColorSecondary будет использоваться в качестве цвета текста невыделенной вкладки.

Я надеюсь, что это сработало для вас, как и для меня.

Смежные вопросы