Як змінити колір піктограми вибраної вкладки TabLayout?


82

Я використовую a TabLayoutз, ViewPagerі мені цікаво, як я можу найбільш ефективно змінити колір піктограми вибраної вкладки в TabLayout.

Ідеальним посиланням на те, як це реалізовано, є додаток Google від Youtube . На головній сторінці є чотири піктограми, які забарвлені в темно-сірий колір. Коли вибрано певну вкладку, піктограма вкладки стає білою.

Без будь-яких сторонніх бібліотек , як я можу досягти такого ж ефекту?

Одне з можливих рішень - це, мабуть, селектори. Але в такому випадку мені довелося б знайти як білу, так і сіру версію піктограми, а потім перемкнути піктограму, коли вкладка буде виділена або скасована. Мені цікаво, чи існує більш ефективний метод, коли я можу просто виділити колір піктограми чи щось інше. Мені не вдалося знайти це в жодному підручнику.

РЕДАГУВАТИ

Рішення, яке я згадав безпосередньо вище, вимагає використання двох малюнків для піктограми кожної вкладки. Мені цікаво, чи є спосіб зробити це програмно за допомогою ОДНОГО малюнка для піктограми кожної вкладки.


1
Будь ласка, використовуйте android-studioтег, лише якщо він специфічний для IDE.
Суфіян

@WayWay ви отримали рішення цієї проблеми? Я теж шукаю те саме.
Раджу

Відповіді:


93

Я знайшов спосіб, який може бути простим.

    viewPager = (ViewPager) findViewById(R.id.viewpager);
    setupViewPager(viewPager);

    tabLayout = (TabLayout) findViewById(R.id.tabs);
    tabLayout.setupWithViewPager(viewPager);
    tabLayout.setOnTabSelectedListener(
            new TabLayout.ViewPagerOnTabSelectedListener(viewPager) {

                @Override
                public void onTabSelected(TabLayout.Tab tab) {
                    super.onTabSelected(tab);
                    int tabIconColor = ContextCompat.getColor(context, R.color.tabSelectedIconColor);
                    tab.getIcon().setColorFilter(tabIconColor, PorterDuff.Mode.SRC_IN);
                }

                @Override
                public void onTabUnselected(TabLayout.Tab tab) {
                    super.onTabUnselected(tab);
                    int tabIconColor = ContextCompat.getColor(context, R.color.tabUnselectedIconColor);
                    tab.getIcon().setColorFilter(tabIconColor, PorterDuff.Mode.SRC_IN);
                }

                @Override
                public void onTabReselected(TabLayout.Tab tab) {
                    super.onTabReselected(tab);
                }
            }
    );

чи можете, будь ласка, сказати, що я намагався слідувати таким же чином, але, на жаль, мій onTabSelected не отримує виклику, поки його виклик viewpager.setOnPageChangeListener
Ерум

Я не знаю, чому onTabSelected не викликається, але я можу рекомендувати вам зробити налагодження коду, щоб знати, де проблема. Якщо ви точно не знайдете помилки, я думаю, ви можете досягти того ж за допомогою setOnPageChangeListener, але це може бути важче зробити.
Крістіан Хойос,

3
setOnTabSelectedListener застарілий, використовуйте addOnTabSelectedListener
Нік Ашер

1
привіт, я використовую customView для вкладки, але не вдалося змінити колір піктограми та переглянути колір backgorund при виборі вкладки за допомогою customView? Будь-яка ідея, як я буду робити?
Ерум

50

Це можна зробити дуже просто, повністю у форматі xml.

Додайте один рядок до свого TabLayout у своєму xml app:tabIconTint="@color/your_color_selector", як показано нижче:

 <android.support.design.widget.TabLayout
     android:id="@+id/tab_layout"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     app:tabIconTint="@color/your_color_selector"
     app:tabIndicatorColor="@color/selected_color"/>

Потім створіть файл селектора кольорів (з іменем "your_color_selector.xml" вище) у каталозі res / color:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/selected_color" android:state_selected="true"/>
    <item android:color="@color/unselected_color"/>
</selector>

Це передбачає наявність у вашому файлі colors.xml 2 кольорів, "selected_color" і "unselected_color".


1
якщо (Build.VERSION.SDK_INT> = 23) {Це працює} ще { stackoverflow.com/a/36161252/8072092 }
Joonsoo

@joonsoo це працює у версіях нижче 23. Я використовую в проектах до API 19.
Він Норман

43
private void setupTabIcons() {
    tabLayout.getTabAt(0).setIcon(tabIcons[0]);
    tabLayout.getTabAt(1).setIcon(tabIcons[1]);
    tabLayout.getTabAt(2).setIcon(tabIcons[2]);
    tabLayout.getTabAt(3).setIcon(tabIcons[3]);

    tabLayout.getTabAt(0).getIcon().setColorFilter(Color.GREEN, PorterDuff.Mode.SRC_IN);
    tabLayout.getTabAt(1).getIcon().setColorFilter(Color.parseColor("#a8a8a8"), PorterDuff.Mode.SRC_IN);
    tabLayout.getTabAt(2).getIcon().setColorFilter(Color.parseColor("#a8a8a8"), PorterDuff.Mode.SRC_IN);
    tabLayout.getTabAt(3).getIcon().setColorFilter(Color.parseColor("#a8a8a8"), PorterDuff.Mode.SRC_IN);


    tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
        @Override
        public void onTabSelected(TabLayout.Tab tab) {
            tab.getIcon().setColorFilter(Color.GREEN, PorterDuff.Mode.SRC_IN);

        }

        @Override
        public void onTabUnselected(TabLayout.Tab tab) {
            tab.getIcon().setColorFilter(Color.parseColor("#a8a8a8"), PorterDuff.Mode.SRC_IN);
        }

        @Override
        public void onTabReselected(TabLayout.Tab tab) {

        }
    });
}

Це працювало добре на початку bt, коли ви закриваєте та відкриваєте програму спочатку, коли вона запускається з кольором, який ви дали.
Сем

Щоб запобігти цьому, ви можете викликати setCurrentItem(0)екземпляр viewPager з активності при onBackButton()виклику методу, і користувач завжди буде повернутий на перший фрагмент при спробі вийти з програми.
Душан Димитрієвич

ви можете використовувати tab.getIcon (). clearColorFilter (); видалити фільтр
Ахмад Дехнаві

2
setOnTabSelectedListener застаріло. Замість цього використовуйте addOnTabSelectedListener. developer.android.com/reference/android/support/design/widget/…
Red M

37

Ви можете використовувати ColorStateList.

Спочатку створіть файл xml (наприклад /color/tab_icon.xml), який виглядає так і визначає різні відтінки для різних станів:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/icon_light"
        android:state_selected="true" />

    <item android:color="@color/icon_light_inactive" />
</selector>

Потім додайте це до свого коду:

ColorStateList colors;
if (Build.VERSION.SDK_INT >= 23) {
    colors = getResources().getColorStateList(R.color.tab_icon, getTheme());
}
else {
    colors = getResources().getColorStateList(R.color.tab_icon);
}

for (int i = 0; i < tabLayout.getTabCount(); i++) {
    TabLayout.Tab tab = tabLayout.getTabAt(i);
    Drawable icon = tab.getIcon();

     if (icon != null) {
        icon = DrawableCompat.wrap(icon);
        DrawableCompat.setTintList(icon, colors);
    }
}

Спочатку ви берете ColorStateList із свого XML (метод без теми застарілий, але необхідний для пристроїв, що працюють перед зефіром). Потім ви встановлюєте для піктограми кожної вкладки його TintList на ColorStateList; використовуйте DrawableCompat (бібліотека підтримки) для підтримки і старих версій.

Це воно!


4
це найкраще рішення поки що, оскільки воно не передбачає ручної зміни кольору піктограми
xleon

Ні, але вам потрібно вставити останній код лише у метод onCreate (..) вашої діяльності після ініціалізації TabLayout (з іменем tabLayout).
Фелікс Едельманн

Чи можемо ми застосувати це до файлу піктограм svg?
Red M

Ви взагалі не можете використовувати svg в Android (без додаткових бібліотек), але моє рішення також працює з Android Vector Drawables (які мають подібні переваги, як svg).
Фелікс Едельманн

Ваше рішення працює, але не для Android 23, всі вкладки в підсумку мають однаковий колір, і це неактивний колір. Будь-які думки чому чи обхідний шлях ??
Джон

17

Для цього вам доведеться налаштувати піктограми вкладок, використовуючи клас селектора для кожної вкладки, наприклад:

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


Тож із цим методом він такий самий, як описаний у питанні? Мені доведеться знайти два малюнки для піктограми кожної вкладки, які я маю на макеті (по одному для кожного кольору)?
шлях

точно. Для детальнішого роз’яснення відредагуйте своє запитання кодом.
Аншул Тягі

9

Додайте це в res > colorsкаталог:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:state_selected="true" android:color="@android:color/holo_orange_dark"/>
  <item android:color="@android:color/holo_red_light"/>
</selector>

Додайте код у вигляді вкладок у xml:

app:tabIconTint="@color/selector_tab"

1
якщо (Build.VERSION.SDK_INT> = 23) {Це працює} ще { stackoverflow.com/a/36161252/8072092 }
Joonsoo

5

Чому б вам не використовувати шрифти значків (наприклад, чудовий шрифт) для своїх значків? потім змініть шрифт тексту вкладки на бажаний значок шрифту .ttf і насолоджуйтесь зміною вибраного кольору тексту на піктограми вкладки!

Я сам використовував цей метод, і він справді приємний і чистий :)

по-перше, налаштуйте заголовки з потрібного шрифту значка:

у string.xml:

    <string name="ic_calculator">&#xf1ec;</string>
    <string name="ic_bank">&#xf19c;</string>

то в MainActivity.Java:

    private void setupViewPager(ViewPager viewPager) {
    ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
    adapter.addFragment(new FragmentBank(), getString(R.string.ic_bank));
    adapter.addFragment(new FragmentCalculate(), getString(R.string.ic_calculator));
    viewPager.setAdapter(adapter);
    }

Тоді вам слід змінити шрифт заголовків вкладок на чудовий шрифт:

    Typeface typeFaceFont = Typeface.createFromAsset(getAssets(), "fontawesome-webfont.ttf");

    TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
    tabLayout.setupWithViewPager(viewPager);
    ViewGroup vg = (ViewGroup) tabLayout.getChildAt(0);
    int tabsCount = vg.getChildCount();
    for (int j = 0; j < tabsCount; j++) {
        ViewGroup vgTab = (ViewGroup) vg.getChildAt(j);
        int tabChildsCount = vgTab.getChildCount();
        for (int i = 0; i < tabChildsCount; i++) {
            View tabViewChild = vgTab.getChildAt(i);
            if (tabViewChild instanceof TextView) {
                ((TextView) tabViewChild).setTypeface(typeFaceFont);
            }
        }
    }

і останнє, але не менш важливе, у відповідному файлі .xml встановіть колір для tabTextColor і tabSelectedTextColor:

<android.support.design.widget.TabLayout
        android:id="@+id/tabs"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:scrollbars="horizontal"
        android:background="@color/colorPrimaryDark"
        app:tabSelectedTextColor="@color/colorAccent"
        app:tabTextColor="@color/textColorPrimary"
        app:tabIndicatorColor="@color/colorAccent"
        app:tabMode="fixed"
        app:tabGravity="fill"/>
</android.support.design.widget.TabLayout>

і в colors.xml:

<resources>
    <color name="colorPrimary">#3F51B5</color>
    <color name="colorPrimaryDark">#303F9F</color>
    <color name="colorAccent">#FF4081</color>
    <color name="colorHighlight">#FFFFFF</color>
    <color name="textColorPrimary">#E1E3F3</color>
</resources>

Значки шрифтів не працюють на деяких пристроях. Будь ласка, використовуйте з обережністю.
Шенкс

4

перевірте наступний код. Налаштуйте свою піктограму - одна кольорова, а інша - кольорова.

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/mybookings_select" android:state_selected="true"/><!-- tab is selected(colored icon)-->
<item android:drawable="@drawable/mybookings" /><!-- tab is not selected(normal no color icon)-->


2

Що стосується другої відповіді, яка показує, як встановити колір окремо, багато людей, можливо, задаються питанням, як видалити колір першої піктограми при переході на наступну. Що ви можете зробити, так це:

private void setupTabIcons() {
tabLayout.getTabAt(0).setIcon(tabIcons[0]);
tabLayout.getTabAt(1).setIcon(tabIcons[1]);
tabLayout.getTabAt(2).setIcon(tabIcons[2]);
tabLayout.getTabAt(3).setIcon(tabIcons[3]);

tabLayout.getTabAt(0).getIcon().setColorFilter(Color.GREEN, PorterDuff.Mode.SRC_IN);
tabLayout.getTabAt(1).getIcon().setColorFilter(Color.WHITE, PorterDuff.Mode.SRC_IN);
tabLayout.getTabAt(2).getIcon().setColorFilter(Color.WHITE, PorterDuff.Mode.SRC_IN);
tabLayout.getTabAt(3).getIcon().setColorFilter(Color.WHITE, PorterDuff.Mode.SRC_IN);


tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
    @Override
    public void onTabSelected(TabLayout.Tab tab) {
        tab.getIcon().setColorFilter(Color.GREEN,PorterDuff.Mode.SRC_IN);

    }

    @Override
    public void onTabUnselected(TabLayout.Tab tab) {
        //for removing the color of first icon when switched to next tab
        tablayout.getTabAt(0).getIcon().clearColorFilter();
        //for other tabs
        tab.getIcon().clearColorFilter();

    }

    @Override
    public void onTabReselected(TabLayout.Tab tab) {

    }
});}

Я б прокоментував другу відповідь, але не мав для цього достатньої репутації! Вибачте. Але, будь ласка, дотримуйтесь, що ви заощадите свій час та головний біль! Щасливого навчання


2

Ви можете використовувати addOnTabSelectedListener, це працює для мене.

tablayout = findViewById(R.id.viewall_tablayout);
pager = findViewById(R.id.viewall_pager);
adapter = new ViewPagerAdapter(getSupportFragmentManager());
adapter.addFragments(new RestFragment(),"Restaurant");
adapter.addFragments(new BarFragment(),"Bar");
adapter.addFragments(new HotelFragment(),"Hotel");
adapter.addFragments(new CoffeeFragment(),"Coffee Shop");
pager.setAdapter(adapter);
tablayout.setupWithViewPager(pager);

tablayout.getTabAt(0).setIcon(R.drawable.ic_restaurant);
tablayout.getTabAt(1).setIcon(R.drawable.ic_glass_and_bottle_of_wine);
tablayout.getTabAt(2).setIcon(R.drawable.ic_hotel_black_24dp);
tablayout.getTabAt(3).setIcon(R.drawable.ic_hot_coffee);

tablayout.getTabAt(0).getIcon().setTint(getResources().getColor(R.color.colorAccent,getTheme()));
tablayout.getTabAt(1).getIcon().setTint(getResources().getColor(R.color.colorAccent,getTheme()));
tablayout.getTabAt(2).getIcon().setTint(getResources().getColor(R.color.colorAccent,getTheme()));
tablayout.getTabAt(3).getIcon().setTint(getResources().getColor(R.color.colorAccent,getTheme()));
tablayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
    @Override
    public void onTabSelected(TabLayout.Tab tab) {
        tab.getIcon().setTint(getResources().getColor(R.color.colorPrimary,getTheme()));
    }

    @Override
    public void onTabUnselected(TabLayout.Tab tab) {
        tab.getIcon().setTint(getResources().getColor(R.color.colorAccent,getTheme()));
    }

    @Override
    public void onTabReselected(TabLayout.Tab tab) {

    }
});

1

Одним із можливих способів «виділення» піктограми є доступ до перегляду зображення та встановлення кольорового фільтра. Спробуйте скористатися методом imageView setColorFilter (int color) та застосувати білий колір.


так, але як ми можемо отримати доступ до перегляду зображень, коли вибрано вкладку
Ерум

1

tabLayout.setOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(viewPager) {...} Заборонено. Скоріше використовувати

tabLayout.addOnTabSelectedListener(new TabLayout.BaseOnTabSelectedListener() {
        @Override
        public void onTabSelected(TabLayout.Tab tab) {
            int tabIconColor = ContextCompat.getColor(context, R.color.tabSelectedIconColor);
            tab.getIcon().setColorFilter(tabIconColor, PorterDuff.Mode.SRC_IN);
        }

        @Override
        public void onTabUnselected(TabLayout.Tab tab) {
            int tabIconColor = ContextCompat.getColor(context, R.color.tabUnselectedIconColor);
            tab.getIcon().setColorFilter(tabIconColor, PorterDuff.Mode.SRC_IN);
        }

        @Override
        public void onTabReselected(TabLayout.Tab tab) {

        }
    });

0

Для зміни відтінку навіть ви можете встановити той самий колір, який має будь-яка піктограма вкладки для малювання

   <com.google.android.material.tabs.TabLayout
                android:id="@+id/tabs"
                android:background="@color/bgFrag"
                android:layout_width="match_parent"
                android:layout_height="?actionBarSize"
                android:layout_gravity="bottom"
                app:tabGravity="fill"
                app:tabTextColor="@drawable/tab_search_text_clr"
                app:tabIconTintMode="multiply"
                app:tabIconTint="#ffffff"
                app:tabIndicator="@null"
                app:tabTextAppearance="@android:style/TextAppearance.Widget.TabWidget"
                app:tabInlineLabel="true"
                app:tabMode="fixed" >

            </com.google.android.material.tabs.TabLayout>

tab_search_text_clr.xml

<?xml version="1.0" encoding="utf-8" ?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true" android:color="#ffffff"/>  <!-- checked -->
    <item android:state_selected="true" android:color="#ffffff"/>  <!-- checked -->
    <item android:color="#acacac"/><!-- anything else -->
</selector>

-1

Розширюючи мою бажану відповідь за допомогою ColorStateList звідси , ви можете використовувати наступне рішення, якщо ви використовуєте власні вкладки.

Налаштуйте вкладки в xml своєї діяльності

 ...

<android.support.design.widget.TabLayout
    android:id="@+id/main_tablayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <android.support.design.widget.TabItem
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout="@layout/nav_bar_tab_item"/>

    <android.support.design.widget.TabItem
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout="@layout/nav_bar_tab_item"/>
</android.support.design.widget.TabLayout>

...

І власний макет вкладки nav_bar_item.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
android:id="@+id/nav_bar_item_layout"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingEnd="@dimen/_5sdp"
android:paddingStart="@dimen/_5sdp">

<ImageView
    android:id="@+id/item_img"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"/>

<TextView
    android:id="@+id/item_description"
    android:layout_width="wrap_content"
    android:gravity="center"

<!-- Use selector here to change the text color when selected/unselected -->
    android:textColor="@color/nav_bar_icons_color"

    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/item_img"/>

</android.support.constraint.ConstraintLayout>

У вашій діяльності

    tabLayout = findViewById(R.id.main_tablayout);

    ConstraintLayout navMyHotelLayout = (ConstraintLayout) tabLayout.getTabAt(0)
            .getCustomView();
    tab1Icon = navMyHotelLayout.findViewById(R.id.item_img);
    tab1TextView = navMyHotelLayout.findViewById(R.id.item_description);

    tab1Icon.setImageResource(R.drawable.ic_tab1);

    // Use the selector here to change the color when selected/unselected
    tintImageViewSelector(tab1Icon, R.color.nav_bar_icons_color);

    tab1TextView.setText("tab 1");

    ConstraintLayout navTtdLayout = (ConstraintLayout) tabLayout.getTabAt(1)
            .getCustomView();
    tab2Icon = navTtdLayout.findViewById(R.id.item_img);
    tab2View = navTtdLayout.findViewById(R.id.item_description);

    tab2Icon.setImageResource(R.drawable.ic_tab2);
    tintImageViewSelector(tab2Icon, R.color.nav_bar_icons_color);
    tab2TextView.setText("tab 2");

І додайте ці допоміжні функції для зміни кольору

public static void tintDrawableSelector(Drawable vd, final @ColorRes int clrRes, Context context) {

    DrawableCompat.setTintList(vd, ContextCompat.getColorStateList(context, clrRes));
}

public static void tintImageViewSelector(ImageView imgView, final @ColorRes int clrRes, Context context) {

    tintDrawableSelector(imgView.getDrawable(), clrRes);
}

Нарешті, селектор nav_bar_icons_color.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@android:color/white" android:state_checked="true"/>
    <item android:color="@android:color/white" android:state_selected="true"/>
    <item android:color="@android:color/black"/>
</selector>

-1

Перевірте наступний код:

tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
    @Override
    public void onTabSelected(TabLayout.Tab tab) {
        if(tab.getPosition() == 0){
            tabLayout.getTabAt(0).setIcon(tabIcons1[0]);
        }
        if(tab.getPosition() == 1){
            tabLayout.getTabAt(1).setIcon(tabIcons1[1]);
        }
        if(tab.getPosition() == 2){
            tabLayout.getTabAt(2).setIcon(tabIcons1[2]);
        }
    }
    @Override
    public void onTabUnselected(TabLayout.Tab tab) {
        tabLayout.getTabAt(0).setIcon(tabIcons[0]);
        tabLayout.getTabAt(1).setIcon(tabIcons[1]);
        tabLayout.getTabAt(2).setIcon(tabIcons[2]);
    }
    @Override
    public void onTabReselected(TabLayout.Tab tab) {
    }
});

Це не працює з темою Material, такою як Theme.MaterialComponents.DayNight
Kishan Solanki

-1

Ви можете змінити колір тексту вибраної вкладки, використовуючи наступний атрибут xml макета вкладки:

app:tabSelectedTextColor="your desired color"

Щоб налаштувати колір піктограми вибраної вкладки, потрібно скористатися селектором Створити файл xml у папці, що малюється:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
   <item android:color="selected_item_color" android:state_activated="true" />
   <item android:color="unselected_item_color" />
</selector> 

та додайте цей селектор до атрибута xml layout layout, як показано нижче:

app:tabIconTint="@drawable/name_of_file"

Не працює. Окрім того, що ви не працюєте, якщо ваше ім'я_файлу можна використовувати / name_of_file.xml, ви повинні позначити його як таке, інакше ви залишаєте читачеві вгадати, що ви маєте на увазі.
Мітч

name_of_file - це вказівка ​​читачеві про назву власного файлу, який можна малювати.
Шрінівасан,

-1

Виконайте наступні кроки відповідно.

app / src / main / res / values ​​/ colors.xml (Додати до colors.xml)

<color name="icon_enabled">#F3D65F</color>
<color name="icon_disabled">#FFFFFF</color>

app / src / main / res / color / custom_tab_icon.xml (Створіть папку з іменем color в res. Створіть у папці спеціальну піктограму вкладки. xml.)

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
 <item android:color="@color/icon_enabled" android:state_selected="true"/>
 <item android:color="@color/icon_disabled" android:state_selected="false"/>
</selector>

app / src / main / res / drawable / ic_action_settings.png (Створити)

двічі клацніть на action_settings, щоб додати

<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="21.6"
android:viewportHeight="21.6"
android:tint="@color/custom_tab_icon">
<group android:translateX="-1.2"
  android:translateY="-1.2">
  <path
      android:fillColor="#FF000000"
 android:pathData="M19.1,12.9a2.8,2.8 0,0 0,0.1 -0.9,2.8 2.8,0 0,0 -0.1,-0.9l2.1,-1.6a0.7,0.7 0,0 0,0.1 -0.6L19.4,5.5a0.7,0.7 0,0 0,-0.6 -0.2l-2.4,1a6.5,6.5 0,0 0,-1.6 -0.9l-0.4,-2.6a0.5,0.5 0,0 0,-0.5 -0.4H10.1a0.5,0.5 0,0 0,-0.5 0.4L9.3,5.4a5.6,5.6 0,0 0,-1.7 0.9l-2.4,-1a0.4,0.4 0,0 0,-0.5 0.2l-2,3.4c-0.1,0.2 0,0.4 0.2,0.6l2,1.6a2.8,2.8 0,0 0,-0.1 0.9,2.8 2.8,0 0,0 0.1,0.9L2.8,14.5a0.7,0.7 0,0 0,-0.1 0.6l1.9,3.4a0.7,0.7 0,0 0,0.6 0.2l2.4,-1a6.5,6.5 0,0 0,1.6 0.9l0.4,2.6a0.5,0.5 0,0 0,0.5 0.4h3.8a0.5,0.5 0,0 0,0.5 -0.4l0.3,-2.6a5.6,5.6 0,0 0,1.7 -0.9l2.4,1a0.4,0.4 0,0 0,0.5 -0.2l2,-3.4c0.1,-0.2 0,-0.4 -0.2,-0.6ZM12,15.6A3.6,3.6 0,1 1,15.6 12,3.6 3.6,0 0,1 12,15.6Z"/>
</group>
</vector>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.