设计支持 TabLayout

16

我正在试用Design Support Library TabLayout。我的问题是其中一个选项卡的标题太长了,导致它被分成两行。我想知道是否有一种方法可以缩放标题文本大小,以确保所有标题都在一行上绘制。

这里是一个截图,更好地说明了我的问题:输入图像描述信息

如果细节很重要,我正在使用Design Support TabLayout、ViewPager和FragmentPagerAdapter来填充我的选项卡。

提前感谢!


1
如果您查看TabLayout,您会发现有一个常量private static final int MAX_TAB_TEXT_LINES = 2;而在TabView(LinearLayout)中,有一个文本视图,其最大行数设置为textView.setMaxLines(MAX_TAB_TEXT_LINES); <br>因此,您可以为选项卡提供自定义视图,将其设置为最大行数,并在末尾省略。即tabLayout.addTab(tabLayout.newTab()。setCustomView(View v) - Neeraj Kumar
@Adam 你得到解决方案了吗? - Akshay
4个回答

21

你设置了吗:

<android.support.design.widget.TabLayout
    ..
    app:tabMode="scrollable" />

将其设置为可滚动会将其设置为一行,但现在选项卡的间距不均匀。有什么建议如何解决? - Adam
1
嗨,亚当,你问题的实际解决方案在Dmitriy Chernov上面 - 然而更改文本大小不遵循Material Guidelines - https://www.google.com/design/spec/components/tabs.html#tabs-usage 特别是在字幕内容下。它指出要么换行两行,要么将其作为可滚动选项卡(根据建议) - 我给出的答案遵循准则并保持选项卡文本在一行上。您可以尝试:app:tabMinWidth =“dp value” 在TabLayout XML中,并尝试符合最大选项卡文本的dp值。 - Mark
正是我所需要的,谢谢! - Roman
@MarkKeen 我不知道为什么它对我没有帮助。我已经将tabMode设置为scrollable,但它仍然没有将文本放在单行上。 :/ - pblead26

10

你可以在styles.xml中更改tabLayout的字体大小或其他参数。例如:

<style name="Base.Widget.Design.TabLayout" parent="android:Widget">
        <item name="tabMaxWidth">@dimen/tab_max_width</item>
        <item name="tabIndicatorColor">?attr/colorAccent</item>
        <item name="tabIndicatorHeight">2dp</item>
        <item name="tabPaddingStart">12dp</item>
        <item name="tabPaddingEnd">12dp</item>
        <item name="tabBackground">?attr/selectableItemBackground</item>
        <item name="tabTextAppearance">@style/AppTheme.TextAppearance.Design.Tab</item>
        <item name="tabSelectedTextColor">?android:textColorPrimary</item>
    </style>

    <style name="AppTheme.TextAppearance.Design.Tab" parent="TextAppearance.AppCompat.Button">
        <item name="android:textSize">12sp</item>
        <item name="android:textColor">?android:textColorSecondary</item>
        <item name="textAllCaps">true</item>
    </style>

谢谢您的回复,Dmitriy。这为我的问题提供了一些启示。更改文本大小将解决我眼前的问题,但我想知道是否可以解决所有设备的问题。我希望确保所有尺寸和分辨率的设备上的选项卡仅占用一行。您是否知道有没有一种方法可以强制选项卡布局适应选项卡内容并放在一行上? - Adam
我不知道textView的singleLine参数,但是你可以为不同的设备添加支持。对于textSize,你可以从不同布局的dimen.xml文件中编写值。请参阅http://developer.android.com/intl/ru/guide/topics/resources/more-resources.html#Dimension。 - Dmitriy Chernov

0

我同意,我使用的是23.1.1版本,但仍然出现了包裹问题;因此我选择启用可滚动。 - Eenvincible

0

将设计支持库更新至23.1.0。他们已经解决了这个问题,但是你的文本大小也会改变


文本大小在23.1.0中无法通过代码进行设置,但可以通过styles.xml进行设置,就像Dmitriy Chernov所做的那样。 - JeremyDay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接