Susținerea/ajustarea dimensiunii textului pe diferite dimensiuni de ecran în Android

Dacă dezvoltați aplicații mobile în special în Android, atunci sunt destul de sigur că trebuie să fi avut dificultăți în a face conținutul aplicațiilor dvs. dinamic, în special dimensiunea textului. Lucrez la aplicații Android de o perioadă destul de lungă de timp și nu am găsit nicio documentație oficială cu privire la susținerea textului de dimensiuni diferite în funcție de ecranul dispozitivului, există totuși câteva resurse oficiale care descriu utilizarea TextView cu susținerea dimensiunii textului așa cum este definită în unitatea sp, de exemplu android:textSize=”12sp”.

Nu există nicio îndoială că fiecare dezvoltator a folosit această abordare pentru a obține dimensiunea dinamică a textului care să susțină dispozitivul pe care rulează aplicația.

Astăzi voi împărtăși experiența mea cu privire la modul în care am realizat dimensiunea dinamică a textului în aplicațiile Android, cu această abordare puteți ajusta nu doar dimensiunea textului, ci și dimensiunea altor vizualizări.

Să ne scufundăm în abordarea noastră de Dynamic TextView size💪🏼

Dacă nu aveți dimen.xml în proiectul dvs. deja, atunci creați unul urmând pașii menționați mai jos:

  • Clic dreapta pe folderul dvs. de valori
  • Select New
  • Select Values Resource File

  • Apoi creați un fișier dimen.xml

  • Definiți o resursă de dimensiune în dimen.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="textSizeTitle">@dimen/_22sdp</dimen>
</resources>

După ce veți adăuga resursa dimen, va apărea o eroare pe @dimen/_22sdpnu vă faceți griji, o vom rezolva în etapele următoare.

Crearea fișierului meta.xml:

Acest fișier va fi folosit ca referință pentru diferitele variante sau calificative pe care le posedă dispozitivul android pe care rulează aplicația.

  • Crearea din nou a unui nou Fișier de resurse de valori
  • Numește-l ca meta, dar nu apăsați încă ok în fereastra de dialog
  • Click pe calificativul de densitate din lista din partea stângă

  • Acum selectați butonul care are semnul mai mare decât, cum ar fi >>, apoi veți vedea ceva de genul acesta

  • Selectați Densitate medie și apăsați ok

Android Studio acceptă diferiți calificative, unul dintre ei fiind densitatea pe care tocmai am folosit-o mai sus. Acum repetați pasul pentru a crea fișierul meta.xml și adăugați toți următorii calificative de densitate:

  • High Density
  • X-High Density
  • XX-High Density
  • XXX-High Density

În continuare creați un alt meta.xml și de data aceasta folosiți size qualifier din partea stângă și selectați opțiunile X-Large.

Acum vom crea un alt fișier meta.xml cu un calificativ diferit care este Smallest Screen Width așa cum se arată mai jos

După ce veți face clic pe Smallest Screen Width. veți vedea opțiunea de a defini cea mai mică lățime în dp, așa cum se arată mai jos

Apoi faceți clic pe butonul OK.

Vom crea mai multe meta.xml cu următoarele cele mai mici dimensiuni de lățime:

  • 300
  • 330
  • 360
  • 390
  • … creați fișiere cu diferența de 30 până când ajungeți la 780

Întrebarea aici este ce ar exista în aceste fișiere, ei bine, vom adăuga resurse de șiruri în toate fișierele meta în următorii pași.

În panoul din stânga al Android Studio aveți aceste fișiere așa cum se arată mai jos:

În fiecare fișier este afișat calificativul său în partea dreaptă a meta.xml, deschideți fiecare fișier și plasați următorul șir de caractere resursă.

meta.xml (hdpi)

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="dimension">values-hdpi</string>
</resources>

Deschideți fiecare fișier meta.xml și resursa menționată mai sus, dar trebuie să schimbați valoarea valorilor-hdpi cu valorile-{aici folosiți calificativul din fișierul respectiv}. Mai mult decât atât, puteți verifica aceste fișiere pe github.

  • meta.xml(hdpi)
  • meta.xml(mdpi)
  • meta.xml(xhdpi)
  • meta.xml(xhdpi)
  • meta.xml(xxhdpi)
  • meta.xml(xxxhdpi)
  • meta.xml(xlarge)
  • meta.xml(sw300dp)
  • meta.xml(sw330dp)
  • meta.xml(sw360dp)
  • meta.xml(sw360dp)
  • meta.xml(sw390dp)
  • meta.xml(sw420dp)
  • meta.xml(sw450dp)
  • meta.xml(sw480dp)
  • meta.xml(sw510dp)
  • meta.xml(sw510dp)
  • meta.xml(sw540dp)
  • meta.xml(sw570dp)
  • meta.xml(sw600dp)
  • meta.xml(sw630dp)
  • meta.xml(sw660dp)
  • meta.xml(sw690dp)
  • meta.xml(sw690dp)
  • meta.xml(sw630dp)
  • meta.xml(sw720dp)
  • meta.xml(sw750dp)
  • meta.xml(sw780dp)

Nu s-a terminat încă, mai avem nevoie de mai multe fișiere, și anume sdp.xml, creați acest fișier cu toți calificatorii pe care i-am creat înainte pentru meta.xml, odată ce ați terminat de creat toate aceste fișiere din sdp.xml cu toți calificatorii, atunci puteți găsi conținutul acestor fișiere pe github. sdp

  • sdp.xml(hdpi)
  • sdp.xml(mdpi)
  • sdp.xml(xhdpi)
  • 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(sw510dp)
  • sdp.xml(sw540dp)
  • sdp.xml(sw570dp)
  • sdp.xml(sw600dp)
  • sdp.xml(sw630dp)
  • sdp.xml(sw630dp)
  • sdp.xml(sw660dp)
  • sdp.xml(sw690dp)
  • sdp.xml(sw720dp)
  • sdp.xml(sw750dp)
  • sdp.xml(sw780dp)

Și asta e tot pentru configurare, acum trebuie doar să folosiți aceste valori ale dimensiunilor pe care le-ați definit deja în fișierul dimen.xml pe care l-am discutat la începutul acestui blog.

Utilizare

După ce ați definit o valoare dimen ca:

<dimen name="textSizeTitle">@dimen/_22sdp</dimen>

Puteți să o folosiți oriunde în fișierele xml de layout-uri:

<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" />

Încercați să rulați aplicația dvs. în diferite emulatoare care au dimensiuni și densități de ecran diferite, veți vedea că dimensiunea textului se ajustează singură în funcție de dispozitivul pe care rulează aplicația.

Și asta e tot ce vă aparține acum 🥳

Mulțumesc pentru lectură și sper că prezența dvs. aici a fost plină de resurse 😎

Puteți verifica, de asemenea, cealaltă poveste a mea despre Styling/Designing TextField in Jectpack Compose UI – Android

Kamran Ramzan este student la Inginerie software și lucrează ca dezvoltator de aplicații mobile Full Stack. El explorează în mod constant noi tehnologii și împărtășește cunoștințele cu voi, băieți, în speranța că vă va ajuta cumva.

Vă rog frumos să bateți palma din nou și din nou 😇 dacă vă plac eforturile mele 👏🏼

Lasă un comentariu