如何从片段更改 Tablayout 的背景颜色?

Posted

技术标签:

【中文标题】如何从片段更改 Tablayout 的背景颜色?【英文标题】:How to change background color of Tablayout from a fragment? 【发布时间】:2021-08-31 21:35:21 【问题描述】:

我在 MainActivity 中创建了一个 tablayout,并使用 viewpager 创建了一堆片段。 当我单击片段中存在的按钮时,我想更改 tablayout 的颜色。 那么如何引用在 MainActivity 中创建的 tablayout 以便我可以在各个片段中更改它的颜色呢?

【问题讨论】:

我会说创建方法来更改 MainActivity 中的选项卡颜色。然后在 Fragments 中创建嵌套接口,并在 MainActivty 中实现这些接口。检查此链接以获取有关片段 -> 活动之间通信的更多信息。 ***.com/questions/14247954/… 【参考方案1】:

您可以根据选项卡的位置使用tablyoutaddOnTabSelectedListener 更改选项卡布局的背景颜色,如下面的代码:

     tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() 
                @Override
                public void onTabSelected(TabLayout.Tab tab) 
                    viewPager.setCurrentItem(tab.getPosition());
                    switch (tab.getPosition())
// Change color of tab layout according to tab position
 
                        case 0:
                            tabLayout.setBackgroundColor(getResources().getColor(R.color.black));
                            break;
                        case 1:
                            tabLayout.setBackgroundColor(getResources().getColor(R.color.teal_200));
                            break;
                        default:
                            tabLayout.setBackgroundColor(getResources().getColor(R.color.black));
                            break;
    
                    
                
    
                @Override
                public void onTabUnselected(TabLayout.Tab tab) 
    
                
    
                @Override
                public void onTabReselected(TabLayout.Tab tab) 
    
                
            );

【讨论】:

以上是关于如何从片段更改 Tablayout 的背景颜色?的主要内容,如果未能解决你的问题,请参考以下文章

如何更新 Tablayout 中的片段? (Viewpager2, FragmentStateAdapter)

AlertDialog 更改片段中的背景颜色 [重复]

如何更改 TabLayout 选定选项卡的图标颜色?

如何使用 Android 代码中的 TabLayout 更改选定的选项卡文本颜色?

使用颜色选择器更改片段中edittext的背景颜色

如何从(和替换)TabLayout 和 ViewPager 移动到新片段?