我在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"/>
当我运行我的应用时,只有第一个标签文本受到影响(任务)。有谁知道为什么以及我怎么能让它们看起来都一样?
以下是在我的主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);
}}
答案 0 :(得分:0)
可能的原因是您指定的大小太大。 (并且文本不能以此大小显示在一行中) 因此,您可以尝试使用较小的尺寸,以查看它是否适用于所有标签。
但是,如果您要具有所需的大小(并且不关心文本是否在两行中),请将以下行添加到dimen资源中。
<dimen name="design_tab_text_size_2line" tools:override="true">@dimen/font_size_tab</dimen>