在我的app中实现tablayout,每个标签都有图标和文字。 选择选项卡后,应选择相同选项卡的图标和文本 未选择的标签,带有不同颜色的文字和图标。
下面是我的代码,用于实现标签布局,但无法在标签选择上更改文本颜色和图标颜色。
private void setupTabIcons() {
TextView tabOne = (TextView) LayoutInflater.from(mContext).inflate(R.layout.custome_tab_with_icon, null);
tabOne.setText("Home");
tabOne.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.selector_home, 0, 0);
tabLayout.getTabAt(0).setCustomView(tabOne);
TextView tabTwo = (TextView) LayoutInflater.from(mContext).inflate(R.layout.custome_tab_with_icon, null);
tabTwo.setText("Search");
tabTwo.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.selector_search, 0, 0);
tabLayout.getTabAt(1).setCustomView(tabTwo);
TextView tabThree = (TextView) LayoutInflater.from(mContext).inflate(R.layout.custome_tab_with_icon, null);
tabThree.setText("WishList");
tabThree.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.selector_wishlist, 0, 0);
tabLayout.getTabAt(2).setCustomView(tabThree);
TextView tabFour = (TextView) LayoutInflater.from(mContext).inflate(R.layout.custome_tab_with_icon, null);
tabFour.setText("Cart");
tabFour.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.selector_cart, 0, 0);
tabLayout.getTabAt(3).setCustomView(tabFour);
TextView tabFive = (TextView) LayoutInflater.from(mContext).inflate(R.layout.custome_tab_with_icon, null);
tabFive.setText("Account");
tabFive.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.selector_accounts, 0, 0);
tabLayout.getTabAt(4).setCustomView(tabFive);
}
请在选择标签时帮助您更改文字颜色和图标。
TIA
答案 0 :(得分:1)
切换标签文字颜色
在您的xml中,将行app:tabTextColor
和app:tabSelectedTextColor
添加到TabLayout。
<android.support.design.widget.TabLayout
android:layout_width="match_parent"
app:tabTextColor="#000000"
app:tabSelectedTextColor="#FFFFFF"
android:layout_height="wrap_content"/>
切换标签图标在您的细分/活动添加选择器中,可以绘制每个标签。
tabLayout = (TabLayout) findViewById(R.id.tab_layout);
//Set selector drawable to each tab
tabLayout.addTab(tabLayout.newTab().setText("Warm Up").setIcon(ResourcesCompat.getDrawable(getResources(), R.drawable.selector_warmup_icon,null)));
tabLayout.addTab(tabLayout.newTab().setText("Exercise").setIcon(ResourcesCompat.getDrawable(getResources(), R.drawable.selector_exercise_icon, null)));
tabLayout.addTab(tabLayout.newTab().setText("Rest").setIcon(ResourcesCompat.getDrawable(getResources(), R.drawable.selector_rest_icon, null)));
tabLayout.addTab(tabLayout.newTab().setText("Success").setIcon(ResourcesCompat.getDrawable(getResources(), R.drawable.selector_success_icon, null)));
selector_warmup_icon.xml(应该是这样)
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/ic_human_white_48dp" android:state_selected="true"/>
<item android:drawable="@drawable/ic_human_grey600_24dp" android:state_selected="false"/>
</selector>
答案 1 :(得分:0)
您可以通过添加TabLayout.OnTabSelectedListener
来实现这一点,它有三种方法onTabSelected()
,onTabUnselected()
和onTabReselected()
,您可以使用它们来更改图标和文本。这是您可以参考的link。
答案 2 :(得分:0)
您可以使用Color State List resource作为文字颜色以及图标的色调。我认为android:state_selected
应该有用。