Вкладка «Поддержка дизайна»

Я играю с TabLayout библиотеки поддержки дизайна. Моя проблема в том, что заголовок одной из вкладок слишком длинный, поэтому он рисуется на 2 строках вместо 1. Мне интересно, есть ли способ масштабировать размер текста заголовка, чтобы все заголовки отображались на 1 строке. .

Вот скриншот, чтобы лучше объяснить мою проблему:введите здесь описание изображения

Если подробности важны, я использую Design Support TabLayout, ViewPager и FragmentPagerAdapter для заполнения своих вкладок.

Заранее спасибо!


person Adam    schedule 09.07.2015    source источник
comment
Если вы увидите, что в 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)   -  person Neeraj Kumar    schedule 10.07.2015
comment
@ Адам У тебя есть решение ??   -  person Akshay    schedule 17.07.2015


Ответы (4)


Вы можете изменить размер шрифта или другие параметры tabLayout в styles.xml. Например:

<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>
person Dmitriy Chernov    schedule 10.07.2015
comment
Спасибо за ответ Дмитрий, это проливает свет на мою проблему. Изменение размера текста решит мою непосредственную проблему, но мне интересно, решит ли это проблему для всех устройств. Я хочу, чтобы вкладки на устройствах всех размеров и разрешений занимали только одну строку. Знаете ли вы, есть ли способ заставить макет вкладки уместить содержимое вкладки в одну строку? - person Adam; 10.07.2015
comment
Я не знаю о singleLine, как параметр textView, но вы можете добавить поддержку разных устройств. Для textSize вы можете записать значение из файлов dimen.xml разных макетов. Посмотрите это developer.android.com/intl/ ru/guide/topics/resources/ - person Dmitriy Chernov; 12.07.2015

Вы установили:

<android.support.design.widget.TabLayout
    ..
    app:tabMode="scrollable" />
person Mark Keen    schedule 09.07.2015
comment
установка его на прокручиваемый устанавливает его на одну строку, но теперь вкладки не расположены на одинаковом расстоянии друг от друга. Любые предложения, как это исправить? - person Adam; 10.07.2015
comment
Привет, Адам, фактическое решение вашего вопроса приведено выше от Дмитрия Чернова, однако изменение размера текста не соответствует Руководству по материалам - google.com/design/spec/components/tabs.html#tabs-usage смотрите конкретно под содержимым субтитров. В нем говорится либо о переносе на две строки, либо о прокручиваемых вкладках (согласно предложению) - ответ, который я дал, следует рекомендациям и сохраняет текст вашей вкладки в одной строке. вы можете попробовать: значение app:tabMinWidth=dp в XML TabLayout и поиграть со значением dp, которое соответствует вашему самому большому тексту вкладки - person Mark Keen; 10.07.2015
comment
именно то, что я искал, спасибо! - person Roman; 20.11.2015
comment
@MarkKeen Я не знаю, почему мне это не помогает. У меня есть tabMode, установленный на прокручиваемый, и он по-прежнему не помещает текст в одну строку. :/ - person pblead26; 01.08.2016

Они утверждали, что исправили эту проблему, но она не работает с библиотекой поддержки 22.2.1.

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

person marmor    schedule 24.08.2015
comment
согласен, я на 23.1.1 и до сих пор заворачивает; поэтому я пошел с возможностью прокрутки - person Eenvincible; 14.12.2015

Обновите библиотеку поддержки дизайна до 23.1.0. Они исправили эту проблему, но размер вашего текста тоже изменился

person Alexsander Amaral da Hora    schedule 22.10.2015
comment
Размер текста через код не работает в 23.1.0, но можно задать через styles.xml, как это сделал Дмитрий Чернов - person JeremyDay; 10.11.2015