Podpora/úprava velikosti textu na různých velikostech obrazovky v systému Android

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í 👏🏼

.

Napsat komentář