【发布时间】:2021-07-09 12:20:01
【问题描述】:
我将 TabLayout 与 ViewPager 一起使用以按要求显示数据。 在选项卡布局中,我的要求是,我必须为所选项目设置不同的字体,为其他项目设置不同的字体。我为此编写了以下代码。
但我面临一个问题。假设我有 4 个项目“一”、“二”、“三”和“四”。最初“一个”默认选择粗体字体,其他字体默认选择普通字体。但是当我单击“两个”选项卡时,“一个”选项卡消失了。当我点击“三”选项卡时,“二”选项卡消失,“一”选项卡以正常字体显示。
private void setupViewPager(CustomViewPager viewPager, TabLayout tabLayout, ArrayList<TipsInfo> mListTips) {
adapter = new ViewPagerAdapter(getChildFragmentManager());
for (int i = 0; i < mListTips.size(); i++) {
if (!TextUtils.isEmpty(mListTips.get(i).getValue()))
adapter.addFragment(TipsDetailFragment.newInstance(mListTips.get(i).getValue()), mListTips.get(i).getLabel());
}
viewPager.setAdapter(adapter);
tabLayout.setupWithViewPager(viewPager);
View tabContent = LayoutInflater.from(requireContext()).inflate(R.layout.item_tips_tablayout_selected, null);
TextView selected = tabContent.findViewById(R.id.tv_tips_selected_tab);
View tabContent1 = LayoutInflater.from(requireContext()).inflate(R.layout.item_tips_tablayout_unselected, null);
TextView unselected = tabContent1.findViewById(R.id.tv_tips_unselected_tab);
tabLayout.addOnTabSelectedListener(
new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
selected.setText(tab.getText());
tab.setCustomView(selected);
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
unselected.setText(tab.getText());
tab.setCustomView(unselected);
//
// for(int i=0; i<tabLayout.getTabCount(); i++){
// if(i != tabLayout.getSelectedTabPosition()){
// unselected.setText(tabLayout.getTabAt(i).getText());
// tabLayout.getTabAt(i).setCustomView(unselected);
// }
// }
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
onTabSelected(tab);
}
}
);
}
我的ViewPaerAdapter 用FragmentStatePagerAdapter 扩展,它的对象用getChildFragmentManager 创建。我的 XML 代码如下所示:
<com.google.android.material.tabs.TabLayout
android:id="@+id/tl_tips"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorWhite"
android:elevation="@dimen/v1dp"
android:visibility="invisible"
app:tabGravity="fill"
android:gravity="start"
app:tabMinWidth="@dimen/v100dp"
android:textAlignment="viewStart"
app:tabIndicatorFullWidth="false"
app:tabIndicatorColor="@color/colorBannerNewDotSelected"
app:tabMode="scrollable"
android:layout_gravity="start"
app:tabIndicatorHeight="@dimen/v3dp"
app:tabSelectedTextColor="@color/colorBlackDark"
app:tabTextAppearance="@style/MyTabLayoutTextAppearance"
app:tabTextColor="@color/colorServiceCount"
/>
item_tips_tablayout_selected 和 item_tips_tablayout_unselected 仅包含应用了不同字体的 TextView。
截图:
- 首字母
- 当点击“Benefits”时,应用到它的字体但“How to use”消失了。
- 当点击“产品使用”时,应用的字体,“使用方法”以普通字体出现,“优点”选项卡消失。
【问题讨论】:
标签: android android-viewpager android-tablayout