Pop-up správy, WebView, Action Bar
Upozornenia pop-up správy
V niektorých situáciach potrebujeme upozorniť používateľa na nejaké činnosti. Napríklad, keď príde SMS správa, chceme používateľa upozorniť, že mu prišla nová správa. V tomto prípade je vhodné, ak sa bude správa zobrazovať na obrazovke, pokiaľ ju používateľ neprečíta, alebo neukončí toto upozornenie. V iných prípadoch, budeme chcieť aby správa oznámila dokončenie nejakej činnosti a zmizla z obrazovky bez toho, aby musel niečo používateľ urobiť. Príkladom takejto správy je odoslanie emailu – používateľ odošle email a následne sa zobrazí na pár sekúnd správa „Email bol odoslaný“.
Pop-up správy rozdeľujeme na
- toast oznámenia
- oznámenia v stavovom riadku
- oznámenia v dialógovom okne
Toast oznámenia
Toast oznámenia sa vytvoria pomocou triedy Toast. Upozornenia sa zobrazia na pár sekúnd a následne sami zmiznú. Oznámenia obsahujú text, ktorý vypĺňa minimálny priestor v okne. Používateľ nereaguje na takéto správy.
Toast dialóg sa vytvorí zavolaním metódy makeText(). Táto metóda obsahuje tri parametre, prvý parameter predstavuje inštanciu triedy Activity (napr. kľúčové slovo this), druhý parameter je textová správa a posledný parameter nastavuje čas, počas ktorého bude toast zobrazený. Okrem zavolania metódy makeText(), musíme ešte zavolať metódu show(), ktorá zobrazí dialóg.
JAVA: Toast.makeText(this, "Toto je ukážka to ast oznámenia", Toast.LENGTH_LONG).show();
Kotlin:
Toast.makeText(applicationContext,"this is toast message",Toast.LENGTH_SHORT).show()
Dialóg môže byť zobrazený na obrazovke krátko alebo dlho – konštanty Toast.LENGTH_LONG alebo Toast.LENGTH_SHORT.
Toast s vlastným vzhľadom
Ak sa nám nepáči vzhľad prednastaveného toast oznámenia, môžeme si vytvoriť vlastný vzhľad.
Vytvoríme si nový layout súbor, ktorý si nazveme napríklad vlastny_toast.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#7777">
<ImageView
android:id="@+id/obrazok1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/ic_launcher"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="úloha bola dokončená"
android:layout_toRightOf="@id/obrazok1"
android:layout_centerInParent="true"
/>
</RelativeLayout>
V aktivite si vytvoríme inštanciu triedy Toast a nastavíme mu umiestnenie, dobu zobrazenia a pomocou metódy setView() mu nastavíme vzhľad nášho layout:
Toast toast = new Toast(this);
toast.setGravity(Gravity.CENTER,0,0);
toast.setDuration(Toast.LENGTH_SHORT);
toast.setView(getLayoutInflater().inflate(R.layout.vlastny_toast,null));
toast.show();
Upozornenia v dialógovom okne
Na rozdiel od toast oznámení, upozornenia v dialógovom okne zmiznú z obrazovky iba vtedy, keď používateľ stlačí tlačidlo. Inštancia triedy AlertDialog sa spustí, deaktivuje sa aktívna aktivita, zostane na obrazovke, kým ju používateľ neukončí manuálne (stlačením tlačidla). Tento druh správ sa používa, keď chceme upozorniť používateľa na nejakú závažnú chybu, alebo chceme, aby po stlačení tlačidla vykonal nejakú funkciu.
Na vytvorenie takéhoto dialógového okna potrebujeme triedu Builder, ktorá obsahuje metódy, pomocou ktorých vytvoríme dialógové okno:
metóda |
popis |
setTitle() |
nastaví titulok v dialógovom okne |
setMessage() |
nastaví text v dialógu |
setIcon() |
ikonka v dialógovom okne |
setPositiveButton() |
definuje metódu, ktorá sa vykoná po kliknutí na toto tlačidlo, ktoré reprezentuje napr. áno |
setNegativeButton() |
definuje metódu, ktorá sa vykoná po kliknutí na toto tlačidlo, ktoré reprezentuje napr. nie |
setNeutralButton() |
definuje metódu, ktorá sa vykoná po kliknutí na toto tlačidlo, ktoré reprezentuje napr. zavrieť |
setView() |
nastaví vlastný vzhľad dialógového okna |
show() |
zobrazí dialóg |
new AlertDialog.Builder(this)
.setTitle("Nadpis oznámenia")
.setMessage("Správa oznámenia")
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//čo sa vykoná v prípade stlačenia tlačidla OK
}
})
.show();