Android Studio:在选项卡项中设置图标的颜色色调

Android Studio:在选项卡项中设置图标的颜色色调,android,menu,menuitem,imageicon,tint,Android,Menu,Menuitem,Imageicon,Tint,我正在使用带有图标按钮的菜单列表。 是否可以在drawables中通过XML对图标着色 android:tint不适用于TabItem元素 您可以在编码部分完成,试试这个 private void setupTabIcons() { tabLayout.getTabAt(0).setIcon(tabIcons[0]); tabLayout.getTabAt(1).setIcon(tabIcons[1]); tabLayout.getTabAt(2).setIcon(tab

我正在使用带有图标按钮的菜单列表。 是否可以在drawables中通过XML对图标着色


android:tint不适用于TabItem元素

您可以在编码部分完成,试试这个

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

        }
    });
}

如果要通过XML设置色调,有一种方法。是通过属性
android:layout
设置的
TabItem
的自定义布局:

<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" />
您可以找到
TintableImageView
的源代码

这种方法为您提供了灵活性,如果您想为不同的选择器状态使用不同的图标颜色,只需创建颜色选择器文件并将其设置为着色颜色即可

app:tint_color="@color/selector_tab"

SetOnTableSelectedListener()已弃用。我用了“AddOnAbsSelectedListener”。这个答案不能回答这个问题。错。没有一种方法。
app:tint_color="@color/selector_tab"