繁体   English   中英

我想在每次单击时更改我的 tablayout 图标?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM