【发布时间】:2017-08-24 09:03:17
【问题描述】:
我正在寻找具有以下自定义行为的 TabLayout
- 自定义字体
- 选择和取消选择选项卡时文本颜色发生变化
- 选择和取消选择选项卡时的粗体和正常字体
- 默认情况下,第一个选项卡应选择粗体文本
我附上了我尝试过的以下代码sn-p。
1) 我创建了名为 FundayTabLayout 的自定义视图
<com.knackv.custom.view.FundayTabLayout
android:id="@id/dashboard_tab_layout"
style="@style/AppTabLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabTextAppearance="@style/AppTabTextAppearance"></com.knackv.custom.view.FundayTabLayout>
2) 我用过的样式
<style name="AppTabLayout" parent="Widget.Design.TabLayout">
<item name="tabMaxWidth">@dimen/size_in_150_dp</item>
<item name="tabIndicatorColor">@color/app_background</item>
<item name="tabBackground">@drawable/tab_background_color_selector</item>
<item name="tabTextAppearance">@style/AppTabTextAppearance</item>
<item name="tabSelectedTextColor">@color/app_blue</item>
</style>
<style name="AppTabTextAppearance" parent="TextAppearance.Design.Tab">
<item name="android:textColor">@color/white</item>
<item name="android:textSize">@dimen/size_in_15_dp</item>
<item name="textAllCaps">false</item>
</style>
3) 设置我的自定义字体:
@Override
public void setupWithViewPager(@Nullable ViewPager viewPager) {
super.setupWithViewPager(viewPager);
this.removeAllTabs();
ViewGroup slidingTabStrip = (ViewGroup) getChildAt(0);
for (int i = 0, count = viewPager.getAdapter().getCount(); i < count; i++) {
Tab tab = this.newTab();
this.addTab(tab.setText(viewPager.getAdapter().getPageTitle(i)));
AppCompatTextView view = (AppCompatTextView) ((ViewGroup) slidingTabStrip.getChildAt(i)).getChildAt(1);
view.setAllCaps(false);
view.setTypeface(Utility.getNormalTypeFace());
}
}
请为我提供此问题的最佳解决方案。
【问题讨论】:
-
为什么这个问题被否决了?如果 SO 已经为这个问题提供了完美的解决方案,请告诉我......
标签: android material-design android-xml android-tablayout