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