2016-04-04 43 views
6

Oto co zrobiłem: I stworzył styl tekstuJak ustawić rozmiar tekstu tablayout?

<!-- Change tab text appearance --> 
    <style name="MyCustomTextAppearance" parent="TextAppearance.Design.Tab"> 
     <item name="textAllCaps">false</item> 
     <item name="android:textAppearance">@style/CustomTabWidgetText</item> 
    </style> 

    <style name="CustomTabWidgetText" 
     parent="@android:style/TextAppearance.Widget.TabWidget"> 
     <item name="android:textSize">16sp</item> 
    </style> 

następnie ustawić go do mojego tablayout

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".activity.HomeActivity" 
    tools:showIn="@layout/app_bar_main"> 


    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="?attr/colorPrimary" 
     app:titleTextColor="#ffffff" 
     /> 


    <android.support.design.widget.TabLayout 
     android:id="@+id/tab_layout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_below="@+id/toolbar" 
     android:background="?attr/colorPrimary" 
     app:tabSelectedTextColor="#ffffff" 
     app:tabTextAppearance="@style/MyCustomTextAppearance" 
     app:tabTextColor="#ffffff" /> 

    <android.support.v4.view.ViewPager 
     android:id="@+id/pager" 
     android:layout_width="match_parent" 
     android:layout_height="fill_parent" 
     android:layout_below="@id/tab_layout" /> 

</RelativeLayout> 

Oto wynik:

enter image description here

Jak widać, tekst "D-day complete" jest mniejszy niż inne. Mam prośbę, aby jego rozmiar był równy innym, ale nie wiem jak. Proszę mi pomóc, dzięki.

+0

można na pewno znajdziesz swoją odpowiedź tutaj ... http: // stackoverflow.com/questions/19442084/change-the-text-size-in-tab-in-android –

+1

Tekst nie pasowałby, gdyby był większy. Czy to naprawić, aby ustawić tabMayout's tabMode na 'app: tabMode =" przewijane "'? Wtedy może cały tekst pasowałby i miałbyś ten sam rozmiar tekstu. To idzie do twojego xml, w tagu 'TabLayout'. – Vucko

+0

lub jeśli masz znaną liczbę zakładek, rozważ zachowanie stałej wartości tabMode i zmniejsz rozmiar tekstu na ekranach o mniejszej szerokości. – hmac

Odpowiedz

15

Można spróbować ustawić dopełnienie w TabLayout (APP: tabPaddingStart = "- 1DP", aplikacja: tabPaddingEnd = "- 1DP")

jak

<android.support.design.widget.TabLayout 
     android:id="@+id/tab_layout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_below="@+id/toolbar" 
     android:background="?attr/colorPrimary" 
     app:tabSelectedTextColor="#ffffff" 
     app:tabTextAppearance="@style/MyCustomTextAppearance" 
     app:tabTextColor="#ffffff" 
     app:tabPaddingStart="-1dp" 
     app:tabPaddingEnd="-1dp"/> 

Pomogło mi)

+0

W rzeczywistości jest to jedyna odpowiedź, która poradziła sobie ... dziękuję @ Serg0! –

+0

Nie mam pojęcia, dlaczego to działa, ale tak jest! Wielkie dzięki! –

+0

@FelipeRibeiroR.Magalhaes Powód, dla którego tekst był mniejszy, był zbyt szeroki dla karty, więc rozmiar czcionki został automatycznie zmniejszony, tak aby pasował. Dzięki zmniejszeniu poziomego wypełnienia klapki, tekst ma więcej miejsca i dlatego może zmieścić się przy normalnym rozmiarze czcionki. Ale to całkowicie zależy od długości tekstu. Tekst, który nadal nie pasuje, pomimo dodatkowej przestrzeni, pozostanie mniejszy. – Alix

1

Po doświadczeniu czegoś podobnego i po przeczytaniu kodu źródłowego TabLayout, próbuję przesłonić wymiar w pliku dimens.xml, takim jak:

<dimen name="design_tab_text_size_2line" tools:override="true">48sp</dimen> 

i nie zapomnij dodać przestrzeń nazw w głównym pliku, na przykład:

<resources xmlns:tools="http://schemas.android.com/tools"> 

i to działa na mnie.

Mam nadzieję, że pomoże!

EDIT:

Wydaje się, że nie działa w każdej sytuacji (to faktycznie ma działać, gdy tekst ma dwie linie lub więcej), ale to pomaga, gdy styl nie działa. Więc używam obu technik (wymiaru stylu i przesłoniętego).

+1

To dziwne, że nikt nie przegłosował tej odpowiedzi. W moim przypadku tylko to zadziałało, gdy przejąłem wymiar design_tab_text_size_2line. W każdym razie dzięki, @thenaoh. – Rizwan

7

Per this post to działało bardzo dobrze dla mnie:

<android.support.design.widget.TabLayout 
     android:id="@+id/tab_layout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     app:tabMode="scrollable" 
     app:tabGravity="fill" 
     app:tabIndicatorHeight="5dp" 
    /> 

W tabMode i tabGravity atrybuty załatwiło sprawę. Dzięki temu etykiety rozciągać tak długo, jak to konieczne i przewinąć tak:

enter image description here

+0

To działa dla mnie, tks! – elirigobeli

0

To działa na mnie:

app:tabMode="scrollable" 
app:tabGravity="fill" 
+2

Podaj informacje, w jaki sposób powyższy kod odpowiada na pytanie, aby poprawić tę odpowiedź. –