IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

2. diel - Spinner - Vlastné TextView položky - XML kód

V minulej lekcii, Spinner - Vytvorenie základného roletového menu , sme začali pracovať na projekte ukážkové aplikácie s tromi spinnery. Prvé, používajúci len základné nastavenie, sme zároveň dokončili.

V dnešnom Java Android tutoriálu si ukážeme, že položky spinnera možné graficky "vylepšiť".

Spinner s vlastným TextView

Už vieme, že defaultná vzhľad položiek spinnera obsahuje jeden TextView pre zobrazenie textu. Ak nám tento jediný TextView stačí, ale radi by sme jeho vzhľad nejako prispôsobili (veľkosť a farbu textu, pozadia atď.), Je možné vytvoriť XML súbor s definíciou vlastného TextView.

Pripravený vzhľad potom aplikujeme na vybranú položku aj na vzhľad položiek v rozbalenom menu. Môžeme tiež vytvoriť návrhy dva:

  • jeden ako vzor pre vybranú položku a
  • druhý ako vzor položiek v rozbalenom menu.

Týmto to ale nekončí! Ak sa dostaneme do situácie, kedy by nám k zobrazenie dát vo spinnera jeden TextView v položke nestačil, nadefinujeme v XML návrh layoutu, obsahujúci ľubovoľné komponenty. Postupne si všetky popísané možnosti vyskúšame.

V tejto lekcii do našej ukážkové aplikácie pridáme druhý spinner, umožňujúca voľbu mesiace v roku. Pre tento Spinner vytvoríme osobitne návrh pre TextView vybrané položky a zvlášť návrh pre TextView položiek otvoreného menu:

Vlastné View pre Android aplikácie Vlastné View pre Android aplikácie

Na uvedených obrázkoch stojí za povšimnutie rozdielny vzhľad položiek rozbaleného menu a zvolenej položky.

Súbor colors.xml - Deklarácia použitých farieb

Do súboru res/values/colors.xml pridáme konštantu s farbou pozadia časti s druhým spinnerom:

<color name="background_color_spinner_2">#C9E7FF</color>

Súbor strings.xml - Data spinnera

V súbore res/values/strings.xml deklarujeme pole textových reťazcov s názvami mesiacov pre menu druhého spinnera:

<string-array name="months_array">
    <item>...</item>
    <item>Leden</item>
    <item>Únor</item>
    <item>Březen</item>
    <item>Duben</item>
    <item>Květen</item>
    <item>Červen</item>
    <item>Červenec</item>
    <item>Srpen</item>
    <item>Září</item>
    <item>Ŕíjen</item>
    <item>Listopad</item>
    <item>Prosinec</item>
</string-array>

Xml návrhy

Ďalej vytvoríme celkom 3 XML návrhy:

  • XML návrh pozadia vybrané položky
  • XML návrh TextView vybrané položky
  • XML návrh TextView položiek menu

XML súbor s pozadím vybrané položky

Z obrázku v úvode lekcie je zrejmé, že TextView zvolené položky má čierne pozadie, zelené orámovanie a guľaté rohy. Tento vzhľad nadefinujeme v XML súboru, ktorý teraz vytvoríme.

Klikneme pravým tlačidlom myši na priečinok res/drawable/ v štruktúre projektu. V zobrazenom menu, cez možnosť New, klikneme na Drawable Resource File:

Vlastné View pre Android aplikácie

V otvorenom okne do políčka File name napíšeme selected_item_background, do políčka Root element napíšeme shape a potvrdíme tlačidlom OK:

Vlastné View pre Android aplikácie

Vytvorený súbor doplníme tak, aby obsahoval tento kód:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="@color/black"/>

    <stroke
        android:color="#89FF00"
        android:width="3dp"/>

    <corners android:radius="10dp"/>
</shape>

Elementom <shape> deklarujeme, že vytvárame tvar. V elementu <solid> nastavujeme jeho farbu, elementom <stroke> nastavujeme farbu a hrúbku jeho okraje a elementom <corners> definujeme zaguľatenie jeho rohov.

Ak budeme mať v Android Štúdiu nastavené zobrazenie v režime Split podľa nasledujúceho obrázku, uvidíme toto:

Vlastné View pre Android aplikácie

Xml návrh TextView vybrané položky spinnera

Ďalšie nový XML súbor vytvoríme kliknutím pravým tlačidlom myši na priečinok res/layout/ v štruktúre projektu a v zobrazenom menu, cez ponuku New zvolíme možnosť Layout Resource File:

Vlastné View pre Android aplikácie

V otvorenom okne vyplníme potrebné údaje. Do políčka File name napíšeme spinner_selected_item a do políčka Root element napíšeme TextView:

Vlastné View pre Android aplikácie

Potvrdíme stlačením tlačidla OK. Novovytvorený súbor doplníme kódom takto:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/selected_item_background"
    android:gravity="center_horizontal"
    android:padding="10dp"
    android:shadowColor="#FFEB3C"
    android:shadowDx="10"
    android:shadowDy="10"
    android:shadowRadius="20"
    android:textColor="@color/white"
    android:textSize="36sp"
    android:textStyle="bold">
</TextView>

V uvedenom kóde tvorenému TextView nastavujeme nami vytvorené pozadia selected_item_background. Ďalej nastavujeme parameter gravity na hodnotu center_horizontal pre horizontálne zarovnanie textu položiek. Nastavujeme aj parameter padding a pomocou parametrov shadowColor, shadowDx, shadowDy a shadowRadius nastavujeme zobrazenému textu efekt tieňa. Ďalej nastavujeme farbu a veľkosť textu a na koniec aj tučný štýl.

Xml návrh TextView položiek menu rozbaleného spinnera

Tento vzhľad opäť definujeme samostatným XML súborom. Podobne, ako v predchádzajúcej pasáži, vytvoríme nový XML súbor, tentoraz pomenovaný spinner_dropdown_item as týmto obsahom:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_horizontal"
    android:textColor="#009106"
    android:textSize="36sp"
    android:textStyle="bold">
</TextView>

Tento návrh je na prvý pohľad jednoduchšie - nastavujeme len zarovnanie textu na stred, jeho farbu, veľkosť a tučný štýl.

Pridanie druhého spinnera do XML návrhu aplikácie

Súbor activity_main.xml, v ktorom máme návrh vzhľadu hlavné aktivity aplikácie, doplníme o kód druhého spinnera:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" ... >

    <LinearLayout ...>
        <!-- oblast pro první spinner -->
        <LinearLayout ...>
            <Spinner ... />
            <TextView ... />
        </LinearLayout>

        <!-- oddělovač -->
        <View
            android:id="@+id/divider1"
            android:layout_width="match_parent"
            android:layout_height="2dp"
            android:background="#787575" />

        <!-- oblast pro druhý spinner -->
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@color/background_color_spinner_2"
            android:orientation="vertical"
            android:padding="20dp">

            <Spinner
                android:id="@+id/spinnerCustomItemText"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />

            <TextView
                android:id="@+id/labelCustomItemText"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="right"
                android:padding="5dp"
                android:text="TextView"
                android:textColor="@color/black" />
        </LinearLayout>

    </LinearLayout>

</ScrollView>

Kvôli úspore miesta je tu skôr napísaný kód skrátený a je uvedený len kód novo pridaných elementov. Do XML kódu sme za prvú oblasť s prvým spinnerom pridali horizontálne oddeľovač, tvorený elementom <View>. Za oddeľovačom je umiestnený layout s druhým spinnerom. Týmto máme pripravený XML kód druhého spinnera.

V budúcej lekcii, Spinner - Vlastné TextView položky - Java kód , doplníme projekt ukážkové aplikácie o Java kód druhého Spinner, ktorý sa od toho prvého bude líšiť nielen vzhľadom, ale i spôsobom práce s dátami.


 

Predchádzajúci článok
Spinner - Vytvorenie základného roletového menu
Všetky články v sekcii
Vlastné View pre Android aplikácie
Preskočiť článok
(neodporúčame)
Spinner - Vlastné TextView položky - Java kód
Článok pre vás napísal Pavel
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Autor se věnuje programování v Javě, hlavně pro Android. Mezi jeho další zájmy patří Arduino, Minecraft.
Aktivity