如果这个问题之前已经被问过了,我很抱歉。
我想在选项卡布局的标签中选择时更改图标。我该如何使用选择器实现这一点?
我的应用程序中有两个选项卡,在选定状态下图标应该更改。
如果这个问题之前已经被问过了,我很抱歉。
我想在选项卡布局的标签中选择时更改图标。我该如何使用选择器实现这一点?
我的应用程序中有两个选项卡,在选定状态下图标应该更改。
1. 创建自定义选项卡选择器 - 您需要同时添加选中状态为 true 和 false。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/home_fill"
android:state_selected="true"/>
<item android:drawable="@drawable/home_line"
android:state_selected="false"/>
</selector>
2. 将自定义选项卡选择器图形添加为tabItem的图标
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/footer"
app:tabIndicatorColor="@color/female_colour">
<android.support.design.widget.TabItem
android:id="@+id/tab_home"
android:layout_width="@dimen/_25dp"
android:layout_height="@dimen/_25dp"
android:padding="@dimen/_4dp"
android:icon="@drawable/tab_home"
/>
</android.support.design.widget.TabLayout>
这段代码被测试过适用于 Android 7.1.1 版本。
请尝试这个
tabLayout.getTabAt(0).setIcon(R.drawable.selector);
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
tab.setIcon(selectedImageResources[tab.getPosition()]);
getSupportActionBar().setTitle(pageTitles[tab.getPosition()]);
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
tab.setIcon(imageResources[tab.getPosition()]);
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
为了制作选项卡的选择器和取消选择器,您可以使用以下方法:
1.创建自定义视图并进行填充:
private View getTabView(int imgDrawable) {
View view = getLayoutInflater().inflate(R.layout.tab_view, null);
ImageView imgTab = (ImageView) view.findViewById(R.id.imgTab);
imgTab.setImageDrawable(getResources().getDrawable(imgDrawable));
return view;
}
2.创建可绘制选择器
tab_home_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/ic_home_selected" android:state_selected="true" />
<item android:drawable="@drawable/ic_home_deselected" />
</selector>
3. 在选项卡中插入:
tabDashboardLayout = (TabLayout) findViewById(R.id.tabDashboardLayout);
//Adding the tabs using addTab() method
View tabView = getTabView(R.drawable.tab_home_selector);;
tabDashboardLayout.addTab(tabDashboardLayout.newTab().setCustomView(tabView));
对于每个选项卡,您需要创建单独的可绘制选择器并添加到选项卡中。