[英]I want to change my tablayout icon everytime i click it?
这是我收到错误的代码,它说我的错误是分号,但是当我输入时它仍然会出错
tabLayout.setTabIconTint(ColorStateList.valueOf(getResources().getColor(color.white))), ColorStateList.valueOf(getResources().getColor(color.gradientLightYellow)))
1)将此代码添加到themes.xml
<style name="MyCustomTextAppearance" parent="TextAppearance.Design.Tab">
<item name="textAllCaps">false</item>
<item name="android:textColor">@color/tab_text_color</item>
</style>
<style name="SecondTabLayout" parent="Widget.MaterialComponents.TabLayout">
<item name="tabTextAppearance">@style/MyCustomTextAppearance</item>
<item name="tabMode">fixed</item>
<item name="tabSelectedTextColor">@color/second</item>
<item name="tabTextColor">@color/text_color</item>
<item name="tabIconTint">@color/text_color</item>
</style>
2)将此代码添加到您的布局中。xml
<com.google.android.material.tabs.TabLayout
android:id="@+id/tab_layout2"
style="@style/SecondTabLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/tab_round_bg">
<com.google.android.material.tabs.TabItem
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:icon="@drawable/ic_my_products" />
<com.google.android.material.tabs.TabItem
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:icon="@drawable/ic_my_holidays" />
</com.google.android.material.tabs.TabLayout>
3) 将此代码添加到您的 java 文件中
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
setListener();
setTabs();
}
private void setTabsColor(int position, int unSelected) {
int tabIconColor = ContextCompat.getColor(context, R.color.selectedColor);
tabIconColor = ContextCompat.getColor(context, R.color.selectedColor);
binding.tabLayout2.getTabAt(position).getIcon().setColorFilter(tabIconColor, PorterDuff.Mode.SRC_IN);
tabIconColor = ContextCompat.getColor(context, R.color.unselectedColor);
binding.tabLayout2.getTabAt(unSelected).getIcon().setColorFilter(tabIconColor, PorterDuff.Mode.SRC_IN);
}
private void setTabs() {
binding.viewPager.setOffscreenPageLimit(2);
binding.tabLayout2.setupWithViewPager(binding.viewPager, true);
adapter = new TabAdapter(get().getChildFragmentManager(), FragmentPagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);
adapter.addFragment(new Fragment1(), "");
adapter.addFragment(new Fragment2(), "");
binding.viewPager.setAdapter(adapter);
int colorInt = context.getResources().getColor(R.color.selectedColor);
ColorStateList csl = ColorStateList.valueOf(colorInt);
Drawable drawable = tintDrawable(context, R.drawable.ic_my_products, csl);
binding.tabLayout2.getTabAt(0).setIcon(drawable);
binding.tabLayout2.getTabAt(1).setIcon(R.drawable.ic_my_holidays);
setTabsColor(0, 1);
}
private Drawable tintDrawable(Context context, @DrawableRes int resId, ColorStateList stateList) {
Drawable drawable = DrawableCompat.wrap(ContextCompat.getDrawable(context, resId)).mutate();
DrawableCompat.setTintList(drawable, stateList);
DrawableCompat.setTintMode(drawable, PorterDuff.Mode.SRC_IN);
return drawable;
}
private void setListener() {
binding.viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
int unSelected = 1;
if (position == 1) {
unSelected = 0;
}
setTabsColor(position, unSelected);
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.