Android Studio:在TabItem中的Icon上设置Color Tint

时间:2017-09-07 12:41:19

标签: android menu menuitem imageicon tint

我使用TabLayout为我的菜单添加了图标按钮。 是否可以通过XML在drawables中对图标进行着色?

android:tint不能使用TabItem元素。

2 个答案:

答案 0 :(得分:3)

你可以编写部分,试试这个

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) {

        }
    });
}

答案 1 :(得分:1)

如果你想通过XML设置色调,有一种方法。是ele = document.getElementById('playerContainer final') 的自定义布局,是通过属性TabItem设置的:

android:layout

<android.support.design.widget.TabItem android:layout_width="wrap_content" android:layout_height="wrap_content" android:icon="@drawable/ic_drawable" android:layout="@layout/custom_tab" /> 布局在哪里:

custom_tab

您可以找到<?xml version="1.0" encoding="utf-8"?> <com.view.TintableImageView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@android:id/icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" app:tint_color="@color/red" /> 的{​​{1}}来源here

如果您想为不同的选择器状态使用不同的图标颜色,只需创建颜色选择器文件并将其设置为淡色并且它可以正常工作,这种方法可以提供灵活性

TintableImageView