2015-07-29 3 views
2

Мне нужно изменить цвет индикатора вкладки (см рисунок ниже):Android Размах Tab настроить цвет индикатора Tab

enter image description here

Даже если я последую следующий официальный учебник: https://developer.android.com/training/basics/actionbar/styling.html#CustomTabs я до сих пор не может сделать он работает.

Приложения компилировать версию: compileSdkVersion 22

Тема приложения: Theme.AppCompat.Light.DarkActionBar

... разреш/значение/styles.xml (тема настройки файла)

<resources> 
<!-- Base application theme. --> 
<style name="AppTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar"> 
    <!-- Customize your theme here. --> 
    <item name="colorPrimary">@color/colorPrimary</item> 
    <item name="colorPrimaryDark">@color/colorDark</item> 
    <item name="android:actionBarTabBarStyle">@color/colorPrimary</item> 
    <item name="android:actionBarTabStyle">@style/ActionBarTabStyle.Example</item> 
</style> 

<!-- ActionBar tabs styles --> 
<style name="ActionBarTabStyle.Example" parent="@style/Widget.AppCompat.Light.ActionBar.TabText"> 
    <item name="android:background">@drawable/tab_indicator_ab_example</item> 
</style> 

<color name="colorDark">#ff9800</color> 
<color name="colorPrimary">#ffc107</color> 
<color name="happy">#ffeb3b</color> 
<color name="normal">#fff176</color> 
<color name="sad">#fff59d</color> 
</resources> 

... Рез/рисуем/tab_indicator_ab_exa mple.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<!-- Non focused states --> 
<item android:drawable="@android:color/transparent" android:state_focused="false" android:state_pressed="false" android:state_selected="false" /> 
<item android:drawable="@drawable/tab_selected_example" android:state_focused="false" android:state_pressed="false" android:state_selected="true" /> 

<!-- Focused states --> 
<item android:drawable="@drawable/tab_unselected_focused_example" android:state_focused="true" android:state_pressed="false" android:state_selected="false" /> 
<item android:drawable="@drawable/tab_selected_focused_example" android:state_focused="true" android:state_pressed="false" android:state_selected="true" /> 

<!-- Pressed --> 
<!-- Non focused states --> 
<item android:drawable="@drawable/tab_unselected_pressed_example" android:state_focused="false" android:state_pressed="true" android:state_selected="false" /> 
<item android:drawable="@drawable/tab_selected_pressed_example" android:state_focused="false" android:state_pressed="true" android:state_selected="true" /> 

<!-- Focused states --> 
<item android:drawable="@drawable/tab_unselected_pressed_example" android:state_focused="true" android:state_pressed="true" android:state_selected="false" /> 
<item android:drawable="@drawable/tab_selected_pressed_example" android:state_focused="true" android:state_pressed="true" android:state_selected="true" /> 
</selector> 

не могу понять, где проблема, все компилируется без ошибок и код следует шаг за шагом официальной документации. Спасибо.

ответ

1

Я использовал PagerSliderTabStrip в некоторых своих проектах. Его легко настроить и использовать.

Gradle файл:

compile 'com.jpardogo.materialtabstrip:library:1.1.0' 

layout.xml файл:

<com.astuetz.PagerSlidingTabStrip 
    android:id="@+id/tabs" 
    android:layout_width="match_parent" 
    android:layout_height="?attr/actionBarSize" 
    android:background="?attr/colorPrimary" /> 

Activity.java:

// Initialize the ViewPager and set an adapter 
ViewPager pager = (ViewPager) findViewById(R.id.pager); 
pager.setAdapter(new TestAdapter(getSupportFragmentManager())); 

// Bind the tabs to the ViewPager 
PagerSlidingTabStrip tabs = (PagerSlidingTabStrip) findViewById(R.id.tabs); 
tabs.setViewPager(pager); 

Чтобы изменить цвет селектора, используйте:

PagerSlidingTabStrip tabs = (PagerSlidingTabStrip) findViewById(R.id.tabs); 
tabs.pstsIndicatorColor(yourColor); 
+0

Thx. Возможно, нет простого и рабочего решения? Я имею в виду ... Это просто цвет индикатора ... –

+0

Мой опыт распространяется только на использование этой библиотеки, которую я рекомендую вам в будущем! @ P.Alex – Marcus

+0

Я пытаюсь реализовать ваше решение, но, как вы можете видеть здесь, https://i.imgur.com/OI0o1Aa.png Я получаю дополнительное пространство наверху, должен ли я отключить или активировать что-то? –

0

Для избежания всех сложностей, я хотел бы предложить использовать PagerSlidingTabStrip

Как очень просто в использовании и имеет много настройки как well.By этого вы сможете создавать раздвижные вкладки, как в Google Play приложения.

1

Если вы используете стиль SlidingTabLayout и стиль SlidingTabStrip (Something like this), тогда вы можете просто вызвать метод класса SlidingTabLayout с именем setSelectedIndicatorColors(int... colors), это параметр массива, но в массиве вы можете просто поместить только один цвет. Так что если вы хотите, чтобы вызвать метод из SlidingTabLayout, это будет выглядеть примерно так:

int[] color = {Color.Pink, Color.Red, Color.Awesome}; 
//It could be only one color if you want 

SlidingTabLayout tabs = (SlidingTabLayout) findViewById(R.id.tabs); 
tabs.setSelectedIndicatorColors(color); 

Но вы можете сделать это, только если вы следовали учебник я связан выше, и используется его стиль реализации Tab.

ПРИМЕЧАНИЕ. Это рекомендуемый и поддерживаемый способ реализации материала Material Design.На более Материал Дизайн Tuts, просто Google с ключевыми словами "Материал Design Tab Tutorial Пример"

1

Вы можете легко попробуйте это

TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs); 
tabLayout.setSelectedTabIndicatorColor(Color.parseColor("#FFFFFF")); 
//Use Color Resource here or directly parse color just like this 
Смежные вопросы