Pokud vyvíjíte mobilní aplikace konkrétně v systému Android, jsem si jistý, že jste museli mít potíže s dynamizací obsahu aplikací, zejména s velikostí textu. Pracuji na aplikacích pro Android už docela dlouho a nenašel jsem žádnou oficiální dokumentaci o podpoře různé velikosti textu podle obrazovky zařízení, existují však některé oficiální zdroje popisující použití TextView s podporou velikosti textu definované v jednotce sp
, např. android:textSize=“12sp“.
Nepochybuji o tom, že každý vývojář použil tento přístup k dosažení dynamické velikosti textu, která podporuje čarodějku zařízení, na kterém aplikace běží.
Dnes se s vámi podělím o své zkušenosti, jak jsem dosáhl dynamické velikosti textu v androidových aplikacích, pomocí tohoto přístupu můžete nastavit nejen velikost textu, ale také velikost ostatních zobrazení.
Ponořme se do našeho přístupu dynamické velikosti TextView💪🏼
Pokud nemáte dimen.xml soubor ve svém projektu, pak jej vytvořte podle níže uvedených kroků:
- Klikněte pravým tlačítkem myši na složku values
- Zvolte New
- Zvolte Values Resource File

- Poté vytvořte soubor dimen.xml

- Definujte dimenzionální zdroj v dimen.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="textSizeTitle">@dimen/_22sdp</dimen>
</resources>
Jakmile přidáte dimenální zdroj, objeví se chyba na @dimen/_22sdp
, nedělejte si s ní starosti, opravíme ji v dalších krocích.
Vytvoření souboru meta.xml:
Tento soubor bude sloužit jako odkaz na různé varianty nebo kvalifikátory, kterými disponuje zařízení android, na kterém aplikace běží.
- Znovu vytvořte nový soubor s hodnotami zdrojů
- Nazvěte jej meta, ale ještě nestiskněte ok v dialogovém okně
- Klikněte na kvalifikátor hustoty ze seznamu na levé straně

- Nyní vyberte tlačítko, které má znak větší než jako >>, pak se zobrazí něco takového

- Zvolte střední hustotu a stiskněte ok
Android Studio podporuje různé kvalifikátory jeden z nich hustota, který jsme právě použili výše. Nyní zopakujte krok vytvoření souboru meta.xml a přidejte všechny následující kvalifikátory hustoty:
- High Density
- X-High Density
- XX-High Density
- XXX-High Density
Dále vytvořte další meta.xml soubor a tentokrát použijeme kvalifikátor velikosti z levé strany a vybereme možnosti X-Large.
Nyní vytvoříme další meta.xml soubor s jiným kvalifikátorem, který je Smallest Screen Width
, jak je uvedeno níže

Jakmile kliknete na Smallest Screen Width
. kvalifikátoru se zobrazí možnost definovat nejmenší šířku v dp, jak je uvedeno níže

Poté klikněte na tlačítko OK.
Vytvoříme další meta.xml soubor s následujícími nejmenšími rozměry šířky:
- 300
- 330
- 360
- 390
- …
- …
- … vytvářejte soubory s rozdílem 30, dokud nedosáhnete 780
Otázkou je, co by v těchto souborech bylo, no a v dalších krocích přidáme do všech meta souborů řetězcový zdroj.
V levém panelu aplikace Android Studio máte tyto soubory, jak je uvedeno níže:

Každý soubor zobrazuje svůj kvalifikátor na pravé straně meta.xml, otevřete každý soubor a umístěte následující řetězec resource.
meta.xml (hdpi)
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="dimension">values-hdpi</string>
</resources>
Otevřete každý soubor meta.xml a výše uvedený resource, ale musíte změnit hodnoty-hdpi hodnotou-{zde použijte kvalifikátor příslušného souboru}. Kromě toho můžete tyto soubory zkontrolovat na githubu.
- meta.xml(hdpi)
- meta.xml(mdpi)
- meta.xml(xhdpi)
- meta.xml(xxhdpi)
- meta.xml(xxxhdpi)
- meta.xml(xlarge)
- meta.xml(sw300dp)
- meta.xml(sw330dp)
- meta.xml(sw360dp)
- meta.xml(sw390dp)
- meta.xml(sw420dp)
- meta.xml(sw450dp)
- meta.xml(sw480dp)
- meta.xml(sw510dp)
- meta.xml(sw540dp)
- meta.xml(sw570dp)
- meta.xml(sw600dp)
- meta.xml(sw630dp)
- meta.xml(sw660dp)
- meta.xml(sw690dp)
- meta.xml(sw720dp)
- meta.xml(sw750dp)
- meta.xml(sw780dp)
Ještě není hotovo, potřebujeme ještě další soubory, což je sdp.xml,
vytvořit tento soubor se všemi kvalifikátory, které jsme předtím vytvořili pro meta.xml,
jakmile budete hotovi s vytvořením všech těchto souborů sdp.xml
se všemi kvalifikátory, pak můžete najít obsah těchto souborů na githubu. sdp
- sdp.xml(hdpi)
- sdp.xml(mdpi)
- sdp.xml(xhdpi)
- sdp.xml(xxhdpi)
- sdp.xml(xxxhdpi)
- sdp.xml(xlarge)
- sdp.xml(sw300dp)
- sdp.xml(sw330dp)
- sdp.xml(sw360dp)
- sdp.xml(sw390dp)
- sdp.xml(sw420dp)
- sdp.xml(sw450dp)
- sdp.xml(sw480dp)
- sdp.xml(sw510dp)
- sdp.xml(sw540dp)
- sdp.xml(sw570dp)
- sdp.xml(sw600dp)
- sdp.xml(sw630dp)
- sdp.xml(sw660dp)
- sdp.xml(sw690dp)
- sdp.xml(sw720dp)
- sdp.xml(sw750dp)
- sdp.xml(sw780dp)
A to je pro nastavení vše, nyní stačí použít tyto hodnoty rozměrů, které jste již definovali v souboru dimen.xml, který jsme probrali na začátku tohoto blogu.
Použití
Pokud jste definovali jednu hodnotu dimen takto:
<dimen name="textSizeTitle">@dimen/_22sdp</dimen>
Můžete ji použít kdekoli ve svých souborech layout xml:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
<!-- // here is the dimen value that will support different screen size-->
android:textSize="@dimen/textSizeTitle"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
Zkuste spustit svou aplikaci v různých emulátorech, které mají různé rozměry a hustotu obrazovky, uvidíte, že se velikost textu sama přizpůsobí podle zařízení, na kterém aplikace běží.
A to je nyní vše 🥳
Děkuji za přečtení a doufám, že vaše přítomnost zde byla přínosná 😎
Můžete se také podívat na můj další příběh na téma Styling/Designing TextField v Jectpack Compose UI – Android
Kamran Ramzan je student softwarového inženýrství a pracuje jako vývojář mobilních aplikací Full Stack. Neustále zkoumá nové technologie a dělí se s vámi o znalosti v naději, že vám to nějak pomůže.
Laskavě znovu a znovu tleskejte 😇, pokud se vám moje snažení líbí 👏🏼
.