【发布时间】:2019-03-11 20:58:11
【问题描述】:
我在我的应用程序中使用TabLayout 进行选项卡式导航。我有一个非常奇怪的问题,我使用此代码创建了 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]);
}
}
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>
问题在于,当应用程序启动第一个选定选项卡(索引 0)时,不使用选定状态图标。相反,它使用非选中状态。
为了更便于解释,这里是问题的屏幕截图,在第一次启动时,我的标签看起来像这样:
什么时候应该是这样的:
更改页面后,所有图标都恢复了完整功能,并且正确选择了所选状态。
我尝试使用TabLayout.Tab select() 方法但结果相同,使用的图标是未选中的图标。
有人知道我可以做些什么来解决它吗?
【问题讨论】:
-
@MsYvette 这是什么意思,如何处理?
-
@MsYvette 你想看选择器吗?
-
是的,看起来你是对的,我想我的选择器中缺少一个状态,现在正在测试它。
-
@MsYvette 很好,选择器的更改并没有解决问题,由于某种原因它仍未被选中。继续寻找解决方案。
-
@MsYvette 选择器代码已添加。
标签: android tabs icons android-tablayout android-selector