16

Sto giocando con il TabLayout di Design Support Library. Il mio problema è che il titolo di una delle schede è troppo lungo e quindi è disegnato su 2 righe anziché 1. Mi chiedo se c'è un modo per ridimensionare le dimensioni del testo del titolo per garantire che tutti i titoli siano disegnati su 1 riga .Design Support TabLayout

Ecco uno screenshot per spiegare meglio il mio problema: enter image description here

Nel caso in cui i dettagli sono importanti, sto usando il disegno di sostegno TabLayout, un ViewPager e un FragmentPagerAdapter per popolare le mie schede.

Grazie in anticipo!

+1

Se vedrai in TabLayout c'è una finale statica privata costante int MAX_TAB_TEXT_LINES = 2; e in TabView (LinearLayout) c'è una vista testuale che ha una linea massima impostata su textView.setMaxLines (MAX_TAB_TEXT_LINES);
In questo modo è possibile fornire la vista personalizzata alla scheda che ha impostato la massima linea 1 e alla fine verrà ellissi. vale a dire tabLayout.addTab (tabLayout.newTab(). setCustomView (View v) –

+0

@Adam Ottiene la soluzione – Akshay

risposta

10

È possibile modificare la dimensione del carattere o di un altro params di tabLayout in styles.xml. Ad esempio:

<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> 
+0

Grazie per la risposta Dmitriy, questo fa luce sul mio problema. La modifica della dimensione del testo risolverà il mio problema immediato, ma mi chiedo se questo risolve il problema per tutti i dispositivi. Voglio assicurarmi che le schede su dispositivi di tutte le dimensioni e risoluzioni occupino solo una riga. Sai se esiste un modo per forzare il layout delle schede per adattare il contenuto della scheda a una riga? – Adam

+0

Non conosco il parametro singleLine come textView, ma è possibile aggiungere il supporto per diversi dispositivi. Per textSize puoi scrivere valore da file dimen.xml di diversi layout. Guarda questo http://developer.android.com/intl/ru/guide/topics/resources/more-resources.html#Dimension –

21

hanno impostato:

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

impostandola su scorrevole lo imposta su una riga, ma ora le schede non sono equidistanti. correggi che? – Adam

+1

Ciao Adam, la vera soluzione alla tua domanda è al di sopra di Dmitriy Chernov - tuttavia la modifica della dimensione del testo non segue le Linee guida sui materiali - https://www.google.com/design/spec/components/tabs.html # tabs-usage guarda in particolare sotto il contenuto dei sottotitoli, che indica di avvolgere su due righe, o avere come schede scorrevoli (come da suggerimento) - la risposta che ho dato segue le linee guida e mantiene il testo della scheda su una riga. app: tabMinWidth = "valore dp" nel XML TabLayout e gioca con un valore dp che si adatta al tuo testo di tabulazione più grande –

+0

esattamente quello che cercavo, grazie! – Roman

0

Aggiornamento libreria di supporto di progettazione per 23.1.0. Hanno risolto questo problema, ma anche le dimensioni del tuo testo cambiano

+0

La dimensione del testo tramite codice non funziona in 23.1.0, ma è possibile impostarla tramite styles.xml come ha fatto Dmitriy Chernov – JeremyDay

Problemi correlati