Android: Tvorba GUI

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
m (Nástroje pro tvorbu GUI: Oprava vzhledu.)
(Oprava vzhledu, upřesnění formulací.)
Řádka 12: Řádka 12:
 
* Editovat přímo XML souboru.
 
* Editovat přímo XML souboru.
 
* Zápis prostřednictvím kódu v Javě.
 
* Zápis prostřednictvím kódu v Javě.
 +
  
 
== Prvky GUI ==
 
== Prvky GUI ==
 +
 
=== TextView ===
 
=== TextView ===
 
*  Popisek bez možnosti editování.
 
*  Popisek bez možnosti editování.
 
*  Metody a odpovídající XML atributy:
 
*  Metody a odpovídající XML atributy:
***android:id <#ID_860351535>
+
** <code>android:id</code>... identifikátor prvku (viz dále)
***setText(String text)
+
** <code>android:text</code>... zobrazený text
**** android:text
+
*** <code>setText(String text)</code>... nastavení textu
***Pevné texty viz Multilanguage <#ID_1479957383>
+
** Pro zápis textů je vhodné použít notaci <code>@string</code> viz Multilanguage.
 +
 
 
=== Button ===
 
=== Button ===
* Podtřída TextView, dědí všechny vlastnosti.
+
* Podtřída TextView, dědí všechny vlastnosti.
XML atributy:
+
; XML atributy:
***android:id <#ID_860351535>
+
* android:id
***android:onClick = "metoda"
+
* android:onClick = "metoda"
**** Aktivita (třída) musí mít metodu:
+
** Aktivita (třída) pak musí mít metodu: <code>public void metoda(View view) {...}</code>.
*****  public void metoda(View view) {...}
+
** Popis reakce na stisk tlačítka popíšeme v&nbsp;této metodě.
**** Odkaz na obsluhu tlačítka.
+
 
 
=== ImageView, ImageButton ===
 
=== ImageView, ImageButton ===
XML atributy:
+
; XML atributy:
***android:id <#ID_860351535>
+
* android:id
***android:scr = "@drawable/zdroj-bez-pripony"
+
* android:scr = "@drawable/zdroj-bez-pripony"
* PNG, JPEG nebo GIF
+
** Lze použít obrázky: PNG, JPEG nebo GIF
* Obrázky ve složce:
+
** Obrázky musí být uloženy v&nbsp;projektu ve složce: <code>res/drawable</code>
***res/drawable
+
  <ImageButton android:src="@drawable/obrazek" />
* Příklad:
+
 
***<ImageButton android:src="@drawable/obrazek" />
+
* Dynamické nastavování obrázků:
* Dynamické nastavování obrázků:
+
Resources res = getResources();
***Resources res = getResources();
+
Drawable img = res.getDrawable(R.drawable.cross);
***Drawable img = res.getDrawable(R.drawable.cross);
+
ibt.setImageDrawable(img);
***ibt.setImageDrawable(img);
+
 
 
=== EditText ===
 
=== EditText ===
* XML atributy:
+
; XML atributy:
**android:id <#ID_860351535>
+
* android:id
***android:autoText=" true"
+
* android:autoText="true"
**** automatické dokončování slov, lépe ale použít třídu AutoCompleteTextView
+
** automatické dokončování slov, lépe ale použít třídu AutoCompleteTextView
***android:singleLine= " false"
+
* android:singleLine="false"
**** text na více řádcích
+
** text na více řádcích
***android:enabled =" false "
+
* android:enabled="false"
**** nemožnost zápisu
+
** textové pole nepůjde editovat
*  Zpracování výsledku:
+
; Metody
***getText()
+
* <code>getText()</code>
**** Vrací typ Editable.
+
** Zpracování výsledku:
**** Lze použít jako parametr Toast:
+
** Vrací typ Editable.
 +
** Lze použít jako parametr pro Toast:
 
  EditText et = (EditText) findviewbyid(R.id.txt);
 
  EditText et = (EditText) findviewbyid(R.id.txt);
 
  Editable str = txt.getText();   
 
  Editable str = txt.getText();   
 
  Toast toast = Toast.makeText(getApplicationContext(), str, Toast.LENGTH_LONG);
 
  Toast toast = Toast.makeText(getApplicationContext(), str, Toast.LENGTH_LONG);
 
  toast.show();   
 
  toast.show();   
**** Editable má metodu:
+
* Editable má metodu: <code>toString();</code>
*****  toString();
+
 
 
=== AutoCompleteTextView ===
 
=== AutoCompleteTextView ===
 
*  Vylepšení třídy EditText pro automatické doplňování.
 
*  Vylepšení třídy EditText pro automatické doplňování.
*  android:id <#ID_860351535>
+
*  android:id
 +
 
 
=== CheckBox ===
 
=== CheckBox ===
* Metody:
+
; XML atributy
***isChecked()
+
  android:id
***setChecked()
+
; Metody:
***toggle()
+
isChecked()
*  android:id <#ID_860351535>
+
setChecked()
 +
toggle()
 +
 
 
=== RadioButton ===
 
=== RadioButton ===
 +
 
=== RadioGroup ===
 
=== RadioGroup ===
*Může mít
+
; XML atributy
** android:id (viz dále)
+
android:id (viz dále)
*getCheckedRadioButtonId()
+
; Metody:
** Vrací ID aktuálně zaškrtnutého tlačítka.
+
getCheckedRadioButtonId()
 +
* Vrací ID aktuálně zaškrtnutého tlačítka.
 +
 
 
=== AnalogClock ===
 
=== AnalogClock ===
*  <AnalogClock android:id="@+id/analogClock1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="67dp" />
+
 
 
=== DigitalClock ===
 
=== DigitalClock ===
*  <DigitalClock android:id="@+id/digitalClock1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/analogClock1" android:layout_centerHorizontal="true" android:layout_marginTop="82dp" />
+
; Metody:
* final DigitalClock hodiny = (DigitalClock) findViewById(R.id.digitalClock1);
+
  getText()
**hodiny.getText().toString();
+
* Vrací datový typ ''Editable''.
 +
 
 
=== Switch ===
 
=== Switch ===
 +
  
  
 
== Společné vlastnosti ==
 
== Společné vlastnosti ==
=== Identifikace prvků ===
 
* android:id
 
**  android:id="@+id/popis"
 
**  Pomocí něj pak odkazuji na prvek: <#ID_1780784546>
 
  
 
== Texty/multilanguage ==
 
== Texty/multilanguage ==
Řádka 102: Řádka 110:
  
 
== Identifikace prvků GUI ==
 
== Identifikace prvků GUI ==
* View
+
* Všechny prvky jsou potomky třídy <code>View</code>.
*developer.android.com/reference/android/view/View.html
+
* Viz [developer.android.com/reference/android/view/View.html Developer.Android.com &rarr; View].
**  findViewById(...)
+
* Pokud potřebujeme získat odkaz na prvek v&nbsp;kódu aplikace, můžeme prvku přiřadit atribut:
****v XML:
+
android:id
***** <TextView android:id="@+id/popis" .../>
+
* ... a následně získat prvek metodou:
****v kódu:
+
  findViewById(...)
***** TextView tv = (TextView) this.findViewById(R.id.popis);
+
 
**  getId()
+
<div class="Priklad">
****int View.getId()
+
*v XML:
** getParent()
+
<TextView android:id="@+id/popis" .../>
****int View.getParent()
+
* v kódu:
** getRootView()
+
TextView tv = (TextView) this.findViewById(R.id.popis);
 +
</div>
 +
 
 +
; Další metody:
 +
int View.getId()
 +
  View View.getParent()
 +
int View.getParent()
 +
  View View.getRootView()
  
  

Verze z 25. 6. 2015, 09:41


Obsah

Nástroje pro tvorbu grafického rozhraní aplikace (GUI)


Prvky GUI

TextView

Button

XML atributy

ImageView, ImageButton

XML atributy
<ImageButton android:src="@drawable/obrazek" />
Resources res = getResources();
Drawable img = res.getDrawable(R.drawable.cross);
ibt.setImageDrawable(img);

EditText

XML atributy
Metody
EditText et = (EditText) findviewbyid(R.id.txt);
Editable str = txt.getText();  
Toast toast = Toast.makeText(getApplicationContext(), str, Toast.LENGTH_LONG);
toast.show();  

AutoCompleteTextView

CheckBox

XML atributy
android:id
Metody
isChecked()
setChecked()
toggle()

RadioButton

RadioGroup

XML atributy
android:id (viz dále)
Metody
getCheckedRadioButtonId()

AnalogClock

DigitalClock

Metody
getText()

Switch

Společné vlastnosti

Texty/multilanguage

Poznámky

Identifikace prvků GUI

android:id
findViewById(...)
  • v XML:
<TextView android:id="@+id/popis" .../>
  • v kódu:
TextView tv = (TextView) this.findViewById(R.id.popis);
Další metody
int View.getId()
View View.getParent()
int View.getParent()
View View.getRootView()


Kontejnery


Menu


Vyskakovací okna

Activity


Další otázky

Vytvářet GUI v kódu, nebo editací XML?

Osobní nástroje
Jmenné prostory
Varianty
Akce
Výuka
Navigace
Nástroje