Szövegméret támogatása/beállítása különböző képernyőméreteken Androidban

Ha mobilalkalmazásokat fejlesztesz kifejezetten Androidban, akkor biztos vagyok benne, hogy nehézségekbe ütközött az alkalmazások tartalmának dinamizálása, különösen a szövegméret. Elég hosszú ideje dolgozom Android alkalmazásokon, és nem találtam semmilyen hivatalos dokumentációt a különböző szövegméretek támogatásáról a készülék képernyőjének megfelelően, bár van néhány hivatalos forrás, amely leírja a TextView használatát a sp egységben meghatározott szövegméret támogatásával, pl. android:textSize=”12sp”.

Kétségtelen, hogy minden fejlesztő használta ezt a megközelítést a dinamikus szövegméret eléréséhez, amely támogatja a készüléket, amelyen az alkalmazás fut.

Ma megosztom a tapasztalataimat arról, hogyan értem el a dinamikus szövegméretet az android alkalmazásokban, ezzel a megközelítéssel nem csak a szövegméretet, hanem más nézetek méretét is beállíthatja.

Merüljünk bele a dinamikus szövegnézeti méret megközelítésünkbe💪🏼

Ha nincs dimen.xml fájl még nincs a projektedben, akkor hozz létre egyet az alábbi lépésekkel:

  • Jobb klikk a values mappára
  • Válassza az Új
  • Values Resource File

  • Ezután hozz létre egy fájlt dimen.xml

  • Definiáljon egy dimenzió erőforrást a dimen.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="textSizeTitle">@dimen/_22sdp</dimen>
</resources>

Mihelyt hozzáadja a dimen erőforrást, hiba lesz a @dimen/_22sdp ne aggódjon emiatt, a következő lépésekben javítani fogjuk.

A meta.xml fájl létrehozása:

Ezt a fájlt referenciaként fogjuk használni a különböző változatokhoz vagy minősítőkhöz, amelyekkel az androidos eszköz rendelkezik, amelyen az alkalmazás fut.

  • Újra létrehoz egy új Values Resource File-t
  • Nevezzük el meta, de még ne nyomja meg az ok gombot a párbeszédpanelen
  • Kattintson a bal oldali listából a sűrűség minősítőre

  • Most válassza ki azt a gombot, amelyikben nagyobb jel van, mint például >>, akkor valami ilyesmit fogsz látni

  • Válassza ki a közepes sűrűséget és nyomja meg az ok

Az Android Studio különböző minősítőket támogat, az egyik a sűrűség, amit fent használtunk. Most ismételje meg a lépést a meta.xml fájl létrehozásához, és adja hozzá az összes következő sűrűségi minősítőt:

  • Nagy sűrűség
  • X-Nagy sűrűség
  • XX-Nagy sűrűség
  • XXX-Nagy sűrűség

Majd hozzon létre egy másik meta.xml fájlt, és ezúttal használjuk a bal oldali méretminősítőt, és válasszuk az X-Large opciókat.

Most létrehozunk egy másik meta.xml fájlt más minősítővel, ami Smallest Screen Width az alábbiak szerint

Amint rákattintunk a Smallest Screen Width. minősítőre kattintva megjelenik a legkisebb szélesség dp-ben történő meghatározásának lehetősége az alábbiak szerint

Aztán kattintson az OK gombra.

Még több metát fogunk létrehozni.xml fájlt a következő legkisebb szélességű méretekkel:

  • 300
  • 330
  • 360
  • 390
  • …30-as különbséggel hozzunk létre fájlokat, amíg el nem érjük a 780

A kérdés itt az, hogy mi lenne ezekben a fájlokban, nos a következő lépésekben minden meta fájlba string erőforrást fogunk hozzáadni.

Az Android Studio bal oldali ablakában az alábbiakban láthatóak ezek a fájlok:

Minden fájl a meta jobb oldalán mutatja a minősítőjét.xml nevet, nyissa meg az egyes fájlokat és helyezze el a következő string erőforrást.

meta.xml (hdpi)

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

Nyissa meg minden meta.xml fájlt és a fent említett erőforrást, de meg kell változtatni az értékeket-hdpi értéket az értékekkel-{itt használja az adott fájl minősítőjét}. Továbbá ezeket a fájlokat a githubon is ellenőrizheti.

  • 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)

Ez még nem kész, még több fájlra van szükségünk, ami a sdp.xml, létrehozza ezt a fájlt az összes minősítővel, amit korábban létrehoztunk a meta.xml, számára, ha kész van a sdp.xml összes ilyen fájljának létrehozásával az összes minősítővel, akkor megtalálja a fájlok tartalmát a githubon. 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)

És ez minden a beállításhoz, most már csak ezeket a dimenzióértékeket kell használni, amelyeket már megadtunk a dimen.xml fájlban, amelyet a blog elején tárgyaltunk.

Használat

Mivel egy dimen értéket definiáltál, mint:

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

Ezt bárhol használhatod a layout xml fájljaidban:

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

Próbáld meg futtatni az alkalmazásodat különböző emulátorokon, amelyek különböző képernyőméretekkel és sűrűséggel rendelkeznek, látni fogod, hogy a szöveg mérete az eszköznek megfelelően állítja be magát, amelyen az alkalmazás fut.

És ez most már mind a tiéd 🥳

Köszönöm az olvasást, és remélem, hogy az itteni jelenléted leleményes volt 😎

Megnézheted a másik történetemet is: Styling/Designing TextField in Jectpack Compose UI – Android

Kamran Ramzan szoftvermérnök hallgató, aki Full Stack Mobile Application fejlesztőként dolgozik. Folyamatosan új technológiákat fedez fel, és megosztja veletek a tudását, remélve, hogy ez valahogy segíteni fog.

Legyetek kedvesek és nyomjátok meg újra és újra a tapsot 😇 ha tetszenek az erőfeszítéseim 👏🏼

.

Szólj hozzá!