样式仅更改Tablayout中的一个选项卡

时间:2017-03-10 18:15:29

标签: android android-tablayout

我在TabLayout布局中有一个CollapsingToolBar。有三个选项卡,任务日历联系人。我为TabLayout定义了样式,并为标签文本定义了文本外观:

<style name="AppTabLayout" parent="Widget.Design.TabLayout">
    <item name="tabIndicatorColor">?attr/colorAccent</item>
    <item name="tabIndicatorHeight">4dp</item>
    <item name="tabPaddingStart">6dp</item>
    <item name="tabPaddingEnd">6dp</item>
    <item name="tabBackground">?attr/selectableItemBackground</item>
    <item name="tabTextAppearance">@style/AppTabTextAppearance</item>
    <item name="tabSelectedTextColor">@color/cardview_dark_background</item>
</style>


<style name="AppTabTextAppearance" parent="TextAppearance.Design.Tab">
    <item name="android:textSize">22sp</item>
    <item name="android:textColor">@android:color/white</item>
    <item name="textAllCaps">false</item>
</style>

并将其添加到我的Tablayout

    <android.support.design.widget.TabLayout
            android:id="@+id/tabs"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom"
            style="@style/AppTabLayout"
            app:tabTextAppearance="@style/AppTabTextAppearance"
            app:tabMaxWidth="0dp"
            app:tabMode="fixed"
            app:tabGravity="fill"/>

当我运行我的应用时,只有第一个标签文本受到影响(任务)。有谁知道为什么以及我怎么能让它们看起来都一样? enter image description here

以下是在我的主Activity中设置布局的代码片段。

    fragments.addAll(Arrays.asList(new Calendar(),new Tasks(),new Contacts()));
    titles.addAll(Arrays.asList(getResources().getString(R.string.fragment_task_title),
            getResources().getString(R.string.fragment_cal_title),getResources().getString(R.string.fragment_contacts_title)));
    TabLayout tabLayout = (TabLayout)findViewById(R.id.tabs);
    ViewPager viewPager = (ViewPager)findViewById(R.id.container);
    ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager(),fragments,titles);
    viewPager.setAdapter(viewPagerAdapter);
    tabLayout.setupWithViewPager(viewPager);

这是我的ViewPagerAdapterClass

public class ViewPagerAdapter extends FragmentPagerAdapter {
ArrayList<Fragment> fragments;
ArrayList<String> titles;

public ViewPagerAdapter(FragmentManager fm, ArrayList<Fragment> fragments, ArrayList<String>titles) {
    super(fm);
    this.fragments = fragments;
    this.titles = titles;
}

@Override
public Fragment getItem(int position) {
    return fragments.get(position);
}

@Override
public int getCount() {
    return fragments.size();
}

@Override
public CharSequence getPageTitle(int position) {

    return titles.get(position);
}}

1 个答案:

答案 0 :(得分:0)

可能的原因是您指定的大小太大。 (并且文本不能以此大小显示在一行中) 因此,您可以尝试使用较小的尺寸,以查看它是否适用于所有标签。

但是,如果您要具有所需的大小(并且不关心文本是否在两行中),请将以下行添加到dimen资源中。

<dimen name="design_tab_text_size_2line" tools:override="true">@dimen/font_size_tab</dimen>