Android TabLayout選択フォント太字

1812 ワード

最近のプロジェクトには、タイトルの選択項目を太くする必要があります.プロジェクトで使用されているのはTabLayoutであり、TabLayoutには対応する属性サポートがないので、自分で方法を考えるしかありません.
ネットで半日探したところ、TabLayoutが基本的に使っていることに気づき、自分の欲しいものが見つからず、別の角度から解決するしかなく、TabLayoutは選択したUIをカスタマイズできるので、この方面から着手することができます.
最後の解決策は、TabLayoutにリスニングを追加し、リスニングで選択したUI、コード、レイアウトファイルをカスタマイズすることです.
 tablayoutTablayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                View view = tab.getCustomView();
                if (null == view) {
                    tab.setCustomView(R.layout.custom_tab_layout_text);
                }
                TextView textView = tab.getCustomView().findViewById(android.R.id.text1);
                textView.setTextColor(tablayoutTablayout.getTabTextColors());
                textView.setTypeface(Typeface.DEFAULT_BOLD);
            }

            @Override
            public void onTabUnselected(TabLayout.Tab tab) {
                View view = tab.getCustomView();
                if (null == view) {
                    tab.setCustomView(R.layout.custom_tab_layout_text);
                }
                TextView textView = tab.getCustomView().findViewById(android.R.id.text1);
                textView.setTypeface(Typeface.DEFAULT);
            }

            @Override
            public void onTabReselected(TabLayout.Tab tab) {

            }
        });

使用するレイアウトファイルは次のとおりです.



リスニングはsetupWithViewPagerメソッドの前に追加する必要があります.そうしないとバグが発生します.