Как изменить цвет выбранной вкладки

Как изменить цвет вкладки при ее выборе, см. снимок экрана:

Я показываю оранжевый цвет в ActionBar, так же, как хочу показать оранжевый цвет вместо голубого.

Чтобы отобразить оранжевый цвет в BackgroundBar, я использую код ниже:

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">

    <style name="Theme.MyAppTheme" parent="android:style/Theme.Holo.Light">
         <item name="android:actionBarStyle">@style/Theme.MyAppTheme.ActionBar</item>
    </style>

   <style name="Theme.MyAppTheme.ActionBar" parent="android:style/Widget.Holo.Light.ActionBar">
        <item name="android:background">#FF4444</item>
    </style>

</resources>

Ответы

Ответ 1

Я действительно рекомендую вам использовать генератор стиля панели действий.

С помощью этого инструмента вы можете легко разместить свои графические элементы на панели инструментов.

Ответ 2

поместите эту функцию и вызовите ее к вашей деятельности и передайте tabhost в качестве параметра

public static void setTabColor(TabHost tabhost) {

            for (int i = 0; i < tabhost.getTabWidget().getChildCount(); i++) {
                tabhost.getTabWidget().getChildAt(i)
                        .setBackgroundResource(R.drawable.header_blank); // unselected
            }
            tabhost.getTabWidget().setCurrentTab(0);
            tabhost.getTabWidget().getChildAt(tabhost.getCurrentTab())
                    .setBackgroundResource(R.drawable.tab_selected_new); // selected
                                                                            // //have
                                                                            // to
                                                                            // change
        }

назовите это следующим образом

        setTabColor(tabHost);
        tabHost.setOnTabChangedListener(new OnTabChangeListener() {

            @Override
            public void onTabChanged(String arg0) {

                setTabColor(tabHost);
            }
             });

надеюсь, что это вам полезно

Ответ 3

Создайте свою собственную тему, как показано ниже.

<item name="android:tabWidgetStyle">@android:style/Widget.TabWidget</item>

после этого

<style name="Widget.TabWidget">
    <item name="android:textAppearance">@style/TextAppearance.Widget.TabWidget</item>
    <item name="android:ellipsize">marquee</item>
    <item name="android:singleLine">true</item>
</style>  


<style name="TextAppearance.Widget.TabWidget">
    <item name="android:textSize">14sp</item>
    <item name="android:textStyle">normal</item>
    <item name="android:textColor">@android:color/tab_indicator_text</item>
</style>   

Или вы можете использовать следующий код.

 tabHost.getTabWidget().getChildAt(i).setBackgroundColor(Color.RED);

или

 tabHost.getTabWidget().getChildAt(0).setBackgroundColor(Color.parseColor("#4E4E9C"));

Надеюсь, это поможет вам.

Ответ 4

myTabHost.setOnTabChangedListener(new TabHost.OnTabChangeListener(){
  @Override
  public void onTabChanged(String tabId) {
    int tab = myTabHost.getCurrentTab();
    View view = myTabHost.getTabWidget().getChildAt(tab).setBackgroundColor(Color.CYAN);
  }
});

Ответ 5

Чтобы изменить фон панели вкладок:

actionBar.setStackedBackgroundDrawable(new ColorDrawable(yourOwnColor)); 

Ответ 6

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

 <?xml version="1.0" encoding="utf-8"?>
        <!-- 
        Copyright (c) Josh Clemm 2010
         -->
    <selector xmlns:android="http://schemas.android.com/apk/res/android">

        <!--  Active tab -->
        <item android:state_selected="true" android:state_focused="false"
        android:state_pressed="false" android:drawable="@drawable/dm_tab_highlight" />
        <!--  Inactive tab -->
    <!--    <item android:state_selected="false" android:state_focused="false" -->
    <!-- android:state_pressed="false" android:drawable="@drawable/tabbarbg" /> -->

        <!--  Pressed tab -->
        <item android:state_pressed="true" android:drawable="@drawable/dm_tab_highlight" />


    </selector> 

Ответ 7

вы можете использовать это как

tab_background_select.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_selected="true"
        android:drawable="@drawable/tab_background" />// for selected
     <item android:drawable="@drawable/tab" /> // for normal
</selector>

Ответ 8

вы можете использовать этот код и задать фон вашего файла item_tab xml

tab_selection.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:state_pressed="false" 
      android:drawable="@drawable/tab_bg_selected" />
<item android:state_selected="false" android:state_pressed="false" 
      android:drawable="@drawable/tab_bg_unselected" />
<item android:state_pressed="true" 
      android:drawable="@drawable/tab_bg_pressed" />
</selector>

Ответ 9

Вы можете использовать этот код и установить значок alpha, он выглядит как один, и другие отключены.

viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
    }

    @Override
    public void onPageSelected(int position) {
        switch (position) {
            case 0:
                tabLayoutUserProfileTabs.getTabAt(0).getIcon().setAlpha(255);
                tabLayoutUserProfileTabs.getTabAt(1).getIcon().setAlpha(128);
                tabLayoutUserProfileTabs.getTabAt(2).getIcon().setAlpha(128);
                tabLayoutUserProfileTabs.getTabAt(3).getIcon().setAlpha(128);
                break;
            case 1:
                tabLayoutUserProfileTabs.getTabAt(0).getIcon().setAlpha(128);
                tabLayoutUserProfileTabs.getTabAt(1).getIcon().setAlpha(255);
                tabLayoutUserProfileTabs.getTabAt(2).getIcon().setAlpha(128);
                tabLayoutUserProfileTabs.getTabAt(3).getIcon().setAlpha(128);
                break;
            case 2:
                tabLayoutUserProfileTabs.getTabAt(0).getIcon().setAlpha(128);
                tabLayoutUserProfileTabs.getTabAt(1).getIcon().setAlpha(128);
                tabLayoutUserProfileTabs.getTabAt(2).getIcon().setAlpha(255);
                tabLayoutUserProfileTabs.getTabAt(3).getIcon().setAlpha(128);
                break;
            case 3:
                tabLayoutUserProfileTabs.getTabAt(0).getIcon().setAlpha(128);
                tabLayoutUserProfileTabs.getTabAt(1).getIcon().setAlpha(128);
                tabLayoutUserProfileTabs.getTabAt(2).getIcon().setAlpha(128);
             tabLayoutUserProfileTabs.getTabAt(3).getIcon().setAlpha(255);
                break;
        }
    }

    @Override
    public void onPageScrollStateChanged(int state) {
    }
});

Ответ 10

Просто добавьте следующие 2 атрибута в макет вкладки.

app:tabSelectedTextColor="@color/color_primary_text"
app:tabTextColor="@color/color_secondary_text"

Целая табуляция в xml выглядит ниже

<android.support.design.widget.TabLayout
android:id="@+id/tab_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentStart="true"
android:layout_gravity="bottom"
android:background="@color/button_background"
android:fillViewport="true"
app:tabBackground="@drawable/fixed_bottom_button"
app:tabIndicatorColor="@color/color_primary_text"
app:tabMode="fixed"
app:tabSelectedTextColor="@color/color_primary_text"
app:tabTextColor="@color/color_secondary_text" />