启动时未选中TabLayout选中的选项卡图标

Emi*_*Adz 10 icons tabs android android-selector android-tablayout

TabLayout在我的应用中使用了Tabbed导航.我有一个非常奇怪的问题,我使用此代码创建了4个选项卡:

private int[] tabIcons = {R.drawable.navigation_timeline_icon_selector, R.drawable.navigation_feed_icon_selector,
        R.drawable.navigation_messages_icon_selector, R.drawable.navigation_notification_icon_selector};

 TabLayout tabLayout = setTabLayout();
    if (tabLayout != null) {
        for (int i = 0; i < 4; i++) {
            tabLayout.getTabAt(i).setIcon(tabIcons[i]);
        }
    }
Run Code Online (Sandbox Code Playgroud)

tabIcon中的每个项目都是selector选定状态和非选定状态.所有图标选择器配置如下:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
      <item android:drawable="@drawable/navigation_timeline_selected_icon" android:state_selected="true"/>
      <item android:drawable="@drawable/navigation_timeline_selected_icon" android:state_pressed="true"/>
      <item android:drawable="@drawable/navigation_timeline_icon" />
</selector>
Run Code Online (Sandbox Code Playgroud)

问题是当应用程序启动时,第一个选定的选项卡(索引0)不使用选定的状态图标.相反,它使用非选择状态.

更详细的解释是这个问题的截图,首次启动我的选项卡如下所示:

在此输入图像描述

相反,它应该是这样的:

在此输入图像描述

更改页面后,所有图标都恢复为完整功能,并且正确选择了所选状态.

我尝试使用该TabLayout.Tab select()方法,但结果与使用的图标相同是未选择的图标.

有人知道我能做些什么来解决它吗?

小智 10

试试这个:

tabLayout.getTabAt(yourInitialPosition).getCustomView().setSelected(true);


Emi*_*Adz 4

选项卡选择的正确答案TabLayout是:

TabLayout.Tab currentTab = mTabs.getTabAt(selectedTab);
if (currentTab != null) {
    View customView = currentTab.getCustomView();
    if (customView != null) {
        customView.setSelected(true);
    }
    currentTab.select();
}
Run Code Online (Sandbox Code Playgroud)

wherecurrentTab.select()会将指示器移动到选定的选项卡,whencustomView.setSelected()将使自定义视图中的所有项目从选择器中设置其选定状态看起来已被选中。