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

Я хочу изменить цвет индикатора вкладки в Android. Цвет по умолчанию для узла вкладок в приложении для Android — синий. Хочу поменять на другой цвет. Помогите пожалуйста мне.

Мой код выглядит следующим образом:

`

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TabWidget
        android:id="@android:id/tabs"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="-4dp"
        android:layout_weight="0" />
    <View 
        android:layout_width="fill_parent"
        android:background="@color/btn_color"
        android:layout_height="5dp"/>

    <FrameLayout
        android:id="@android:id/tabcontent"
        android:layout_width="fill_parent"
        android:layout_height="0dip"
        android:layout_weight="1" />

    <Button
        android:id="@+id/buttonBookConfirm"
        android:layout_width="fill_parent"
        android:layout_height="35dp"
        android:textColor="@color/btn_text"
        android:background="@color/btn_color"
        android:layout_alignParentBottom="true"
        android:text="@string/btn_text" />
</LinearLayout>

`

Мой Java-код выглядит следующим образом: `общедоступный класс TabHostActivity extends TabActivity { /** Вызывается при первом создании действия. */

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_tab_host);

    Resources res = getResources(); // Resource object to get Drawables
    TabHost tabHost = getTabHost(); // The activity TabHost
    TabHost.TabSpec spec; // Reusable TabSpec for each tab
    Intent intent; // Reusable Intent for each tab
    // Create an Intent to launch an Activity for the tab (to be reused)
    intent = new Intent().setClass(TabHostActivity.this,HomeActivity.class);
    spec = tabHost.newTabSpec("home")
            .setIndicator("", res.getDrawable(R.drawable.plays))
            .setContent(intent);
    tabHost.addTab(spec);

    // Do the same for the other tabs

    intent = new Intent().setClass(TabHostActivity.this, AboutActivity.class);
    spec = tabHost.newTabSpec("about")
            .setIndicator("", res.getDrawable(R.drawable.movies))
            .setContent(intent);
    tabHost.addTab(spec);


    intent = new Intent().setClass(TabHostActivity.this, ContactActivity.class);
    spec = tabHost
            .newTabSpec("contact")
            .setIndicator("",
                    res.getDrawable(R.drawable.events))
            .setContent(intent);
    tabHost.addTab(spec);

    //set tab which one you want open first time 0 or 1 or 2
    tabHost.setCurrentTab(0);

}`

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


введите здесь описание изображения


person Nikhil Pawar    schedule 22.02.2015    source источник
comment
Проверьте эту ссылку - jgilfelt.github.io/android-actionbarstylegenerator   -  person Surender Kumar    schedule 24.02.2015


Ответы (4)


android:setLeftStripDrawable="@color/your_custom_color

создайте пользовательские цветовые ресурсы в папке res- > values ​​и укажите это там

person rogerwar    schedule 24.02.2015

Вам следует ознакомиться с документами для TabWidget. Вы должны использовать свойства android:tabStripLeft и android:tabStripRight XML, чтобы изменить цвет фона.

Самый простой способ, вероятно, состоит в том, чтобы создать png 1px x 1px с нужным цветом, поместить его в каталог ресурсов drawable в вашем проекте и использовать его.

person JonasCz    schedule 22.02.2015
comment
Можете ли вы уточнить это на примере или дать мне дополнительный фрагмент кода, чтобы я получил четкое представление об этом. - person Nikhil Pawar; 22.02.2015

просто используйте app:tabIndicatorColor="@color/your color"

person Harsh Singhal    schedule 10.06.2017
comment
это с библиотекой дизайна или связано с фрагментами appcompat? - person kAmol; 06.10.2017

Вы можете добиться этого программно, используя:

TabLayout tabLayout = findViewById(R.id.YOUR_TAB_LAYOUT);

tabLayout.setSelectedTabIndicatorColor(YOUR_COLOR)); 
person Matthew Mitchell    schedule 11.06.2020