【问题标题】:Design Support TabLayout设计支持 TabLayout
【发布时间】:2023-03-04 15:52:02
【问题描述】:

我正在使用设计支持库 TabLayout。我的问题是其中一个选项卡的标题太长,因此它绘制在 2 行而不是 1 行上。我想知道是否有办法缩放标题文本大小以确保所有标题都绘制在 1 行.

这是一个更好地解释我的问题的截图:

如果细节很重要,我会使用 Design Support TabLayout、ViewPager 和 FragmentPagerAdapter 来填充我的标签。

提前致谢!

【问题讨论】:

  • 如果您将在 TabLayout 中看到有一个常量 private static final int MAX_TAB_TEXT_LINES = 2;在 TabView(LinearLayout) 中有一个文本视图,其最大行数设置为 textView.setMaxLines(MAX_TAB_TEXT_LINES);
    因此,您可以将自定义视图提供给设置为最大第一行的选项卡,并且它会在最后变成椭圆形。即 tabLayout.addTab(tabLayout.newTab().setCustomView(View v)
  • @Adam 你有解决方案吗??

标签: android fragmentpageradapter androiddesignsupport android-tablayout


【解决方案1】:

你设置了吗:

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

【讨论】:

  • 将其设置为可滚动确实会将其设置为一行,但现在选项卡的间距不相等。有什么建议可以解决这个问题吗?
  • 嗨,Adam,您的问题的实际解决方案来自 Dmitriy Chernov - 但是更改文本大小不遵循材料指南 - google.com/design/spec/components/tabs.html#tabs-usage 专门在字幕内容下查看。它声明要么用两行换行,要么作为可滚动的标签(根据建议)——我给出的答案遵循指导方针,并将标签文本保持在一行。您可以尝试:TabLayout XML 中的 app:tabMinWidth="dp value" 并使用适合您最大标签文本的 dp 值
  • 正是我想要的,谢谢!
  • @MarkKeen 我不知道为什么它对我没有帮助。我将 tabMode 设置为可滚动,但它仍然没有将文本放在单行上。 ://
【解决方案2】:

您可以在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 的回复,这对我的问题有所了解。更改文本大小将解决我的直接问题,但我想知道这是否解决了所有设备的问题。我想确保所有尺寸和分辨率的设备上的标签只占一行。你知道是否有办法强制选项卡布局将选项卡的内容放在一行上?
  • 我不知道singleLine之类的textView参数,但是你可以添加对不同设备的支持。对于 textSize,您可以从不同布局的 dimen.xml 文件中写入值。观看此developer.android.com/intl/ru/guide/topics/resources/…
【解决方案3】:

他们声称已经解决了这个问题,但它在支持库 22.2.1 中不起作用。

见:https://code.google.com/p/android/issues/detail?id=175516

【讨论】:

  • 我同意,我在 23.1.1 上,但仍然可以打包;所以我启用了可滚动
【解决方案4】:

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

【讨论】:

  • 通过代码的文本大小在 23.1.0 中不起作用,但您可以像 Dmitriy Chernov 所做的那样通过 styles.xml 设置它
猜你喜欢
  • 2015-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-17
  • 2015-09-26
  • 2015-10-10
  • 1970-01-01
  • 2016-01-17
相关资源
最近更新 更多