4. A konténerek. 4.1. Konténerek. 4.1.1. LinearLayout



Hasonló dokumentumok
3. Egyszerű komponensek

UI megismerése, különböző felbontások támogatása, használati jogok kérése

ANDROID ALKALMAZÁSFEJLESZTÉS

Szilipet programok telepítése Hálózatos (kliens/szerver) telepítés Windows 7 operációs rendszer alatt

SEGÉDLET a GYÓGYSZERÉSZI ADATGYŰJTÉS OSAP1578 program használatához

WebAromo elindítása, bejelentkezés

Táblázatkezelés 2. - Adatbevitel, szerkesztés, formázás ADATBEVITEL. a., Begépelés

strings.xml res/values/strings.xml fájlban hozzuk létre a hiányzó string adatforrásainkat A jelenlegi helyett ez álljon: <resources> <string

Alap számológép alkalmazás

KIR-STAT internetes adatgyűjtő rendszer

WordPress segédlet. Bevezető. Letöltés. Telepítés

Táblázatos adatok használata

Tisztelt Tulajdonosok!

QGIS tanfolyam (ver.2.0)

Atlon 2 Utasbiztosítási Rendszer

Tanúsítvány igénylése sportegyesületek számára

Jelentkezési lap képző szervek részére

Geotechnika II. (NGB-SE005-2) Geo5 használat

A GroupWise WebAccess Alapillesztőfelület

Felhasználói kézikönyv

FÁJLOK ÉS MAPPÁK MÁSOLÁSA PENDRIVE-RA ÉS CD-RE A LEGEGYSZERŰBBEN WINDOWS XP-N

Ügyfélkapuból hivatalos ügy indítása

1. kép. A Stílus beállítása; új színskála megadása.

Táblázatok kezelése. 1. ábra Táblázat kezelése menüből

Duál Reklám weboldal Adminisztrátor kézikönyv

Egyszerűbb a Google keresőbe beírni a Sharepoint Designer 2007 letöltés kulcsszavakat és az első találat erre a címre mutat.

Java és web programozás

Alapvető beállítások elvégzése Normál nézet

A WORDPRESS TELEPÍTÉSÉNEK LÉPÉSEI

A WORDPRESS TESTRESZABÁSA (MEGJELENÉS MENÜ ELEMEI)

ADATSZOLGÁLTATÁS központi honlap használata esetén

Broadcast Service Widget

1. Felhasználói név és jelszó

Általános fiók beállítási útmutató

Csatlakozás a BME eduroam hálózatához Setting up the BUTE eduroam network

Kezdeti Útmutató a Szolgáltatáselemző Rendszer használatához. szakembereknek számára. Tartalom

Fatömegbecslési jegyzőkönyvek

CareLink Personal telepítési útmutató. Első lépések a CareLink Personal adatfeltöltéshez


Grafikus felhasználói felület (GUI) létrehozása A GUI jelentése Egy egyszerű GUI mintaalkalmazás létrehozása

NYOMTATÁSI SABLONOK KEZELÉSE A DOAS-BAN

DOAS FordEcat kapcsolat beállítása


8,0 MP hátlapi, LED vakuval. - micro SD kártyaolvasó - 1db USB 2.0 a táblagépen - 2db USB 2.0 a billentyűzeten. - fényérzékelő - giroszkóp

Dokumentum létrehozása/módosítása a portálon:

Kézikönyv EKÁER az abasban

Az Online Számla rendszere Regisztráció

Táblázatok. Utolsó módosítás: 11/22/ :07:23

Felhasználói útmutató

Felhasználói kézikönyv - Android kliens

SZOFTVERFEJLESZTÉS ANDROID PLATFORMRA. Dr. Iszály György Barna

ReszlAd fájl, kitöltési útmutató:

3. Ezután a jobb oldali képernyő részen megjelenik az adatbázistábla, melynek először a rövid nevét adjuk meg, pl.: demo_tabla

Belépés a GroupWise levelező rendszerbe az Internet felől

Tanrend jelentő képző szervek részére

VÁLTOZÁSOK AZ ÉTDR MŰKÖDÉSÉBEN

Kezdő lépések Microsoft Outlook

Hogyan készítsünk Colorbox-os képgalériát Drupal 7-ben?

A CCL program használatbavétele

Kézikönyv. Nyitott tételek összevezetése

Példaprogramok Android alá (Lista, mentés, visszatöltés, pattogó android figura) Android alapok. Android játékfejlesztés.

BetBulls Opciós Portfolió Manager

Szolgáltatói Adminisztrátori leírás

FELHASZNÁLÓI KÉZIKÖNYV

Minta a Szigetvár feladathoz

Szabadkai Műszaki Szakfőiskola. Web programozás. dr Zlatko Čović

Elmib Önkormányzati hibabejelentő. Felhasználói kézikönyv v1.0

Optimumkeresés számítógépen

ÁNYK53. Az Általános nyomtatványkitöltő (ÁNYK), a személyi jövedelemadó (SZJA) bevallás és kitöltési útmutató együttes telepítése

Felhasználói kézikönyv

PHP-MySQL. Adatbázisok gyakorlat

Tájékoztató. Használható segédeszköz: -

Objektumok és osztályok. Az objektumorientált programozás alapjai. Rajzolás tollal, festés ecsettel. A koordinátarendszer

Stunnel leírás. Az stunnel programot a következő módon telepíthetjük Windows környezetben:

A másolás folyamata. vagy. Xerox WorkCentre 5945/5955 többfunkciós nyomtató. Szolgáltatások kezdőlap. Munkaállapot. Érintőképernyő.

Kézikönyv. Nyitott tételek törzs

Android alapok. Android játékfejlesztés

Elektronikus napló használati útmutatója szülőknek

Parlagfű Bejelentő Rendszer

ELSŐ LÉPÉSEK A SZÁMÍTÓGÉPEK RODALMÁBA AMIT A SZÁMÍTÓGÉPEKRŐL TUDNI ÉRDEMES

Információs technológiák 2. Gy: CSS, JS alapok

AXEL Számlázó és készletnyilvántartó program

Cikktípusok készítése a Xarayában

Leltározás a DOAS rendszerben

Programozás BMEKOKAA146. Dr. Bécsi Tamás 8. előadás

A TÁVOKTATÁSI PORTÁLHOZ

VI. Robotprogramozó Országos Csapatverseny évfolyam

EDUROAM WI-FI beállítása

Energiainformációs Adattár Adatgyűjtő alrendszer felhasználói dokumentáció

Oktatási segédanyag. Weboldalszerkesztési gyakorlatok

Kézikönyv. Utolsó nyitott tétel mozgás stornózása

Adatforgalomra vonatkozó beállítások. Lépjünk be a Beállítások menübe

Végrehajtói Nyilvántartó Rendszerbe illeszkedő Postázási modul ismertetése

SharePoint Designer 2007

Java felhasználói felület

A Microsoft OFFICE. EXCEL táblázatkezelő. program alapjai as verzió használatával

A. Webes metaadat szerkesztő

NetECG központ Felvétel beküldése mentőautóból, háziorvosi rendelőből a korházba majd vizsgálata Cardiospy-NetECG programmal

Képek a HTML oldalon

Elektronikus napló használati útmutatója diákoknak

Átírás:

Dashboard» JavaForum»». A konténerek. A konténerek A konténer arra a célra szolgál, hogy más konténereket vagy komponenseket tegyünk bele, ezzel megszabva az elhelyezkedés pontos és kevésbé pontos szabályait. Szinte kivétel nélkül fa struktúrába szervezett konténerekből állítjuk össze a felhasználói interfészt, s az előző fejezetben részletezett komponensek lesznek a fa levelei. A mobil eszköz kis képernyője és az ablakok kötött alakja okán nem kell attól tartanunk, hogy túl sok konténer használatát kellene megtanulnunk, alig pár konténer típussal fogunk találkozni, ám ezekkel minden szükséges műveletet meg tudunk tenni... Konténerek... LinearLayout Az eddigi példákban szinte kivétel nélkül a LinearLayout szerepelt, mivel ez olyan egyszerű, mint a faék: a hozzáadott komponenseket egymás mellé vagy egymás alá pakolja. Ha túl sok komponenst adunk hozzá, akkor egyszerűen nem ábrázolja a felesleget, azok kicsúsznak a kijelzőről. Mindegyik LinearLayout példánynak megvan a maga gravitációja, alapesetben balra és felfelé "esnek" a komponenseink, az első komponensünk a bal felső sarokba fog kerülni. Nézzünk egy egyszerű példát, amelyben egy felhasználónevet és jelszót bekérő képernyőtervet írunk le XML alapokon. Ehhez a res mappában a layout alatti main.xml állomány tartalmát meg kell változtatnunk: main.xml 9 0 9 0 9 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:background="#0000" android:orientation="vertical"> <TextView android:id="@+main/usernamelabel" android:text="@string/usernamelabel" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <EditText android:id="@+main/usernamefield" android:text="@string/usernamefield" android:layout_height="wrap_content" /> <TextView android:id="@+main/passwordlabel" android:text="@string/passwordlabel" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <EditText android:id="@+main/passwordfield" android:text="@string/passwordfield" android:layout_height="wrap_content" android:password="true" /> <Button android:id="@+main/signinbutton" android:text="@string/signinlabel" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> wiki.javaforum.hu/pages/viewpage.action?pageid=9 /

Láthatjuk, hogy a LinearLayout fogja közre a többi komponenst, amelyeket egymás alá szeretnénk helyezni. Nézzük meg közelebbről a LinearLayoutattribútumait: android:layout_height, a konténer magassága. Értéke lehet fill_parent, amikor kitölti a szülő konténer magasságát; wrap_content, amikor a benne lévő egyéb komponensek magasságát veszi fel; lehet pixelben megadott érték (például: 00px), ekkor pont ezt a méretet veszi fel. android:layout_width, a konténer szélessége. Azonosan működik, mint a magasság. android:orientation, a konténer feltöltési iránya. Lehet horizontal, amikor egymás mellé pakolja a komponenseket, illetve lehet vertical, amikor egymás alá. A vízszintes feltöltés az alapértelmezett. A komponensek esetén is hasonlóképp értelmezhető a layout_height és a layout_width. Vegyük észre az android:text attribútumokat, ahol hivatkozunk egyéb erőforrásokra is, ezeket fel kell vennünk a strings.xml állományban: strings.xml <resources> <string name="app_name">hellojavaforum</string> <string name="usernamelabel">username:</string> <string name="usernamefield">username</string> <string name="passwordlabel">password:</string> <string name="passwordfield">password</string> <string name="signinlabel">sign in!</string> </resources> A használathoz egyszerűen be kell állítanunk a létrehozott erőforrást, mint képernyőkép: Java 9 0 super.oncreate(savedinstancestate); try { setcontentview(r.layout.main); } catch (Exception except) { TextView textview = new TextView(this); final Writer result = new StringWriter(); final PrintWriter printwriter = new PrintWriter(result); except.printstacktrace(printwriter); textview.settext(result.tostring()); setcontentview(textview); } A kijelzőn pedig megjelenik a várt elrendezés: wiki.javaforum.hu/pages/viewpage.action?pageid=9 /

... TableLayout és TableRow Az esetek nagy részében táblázatos formában szeretnénk komponenseket kitenni a képernyőre. A TableLayout esetén táblázat celláiba kerülnek komponensek és a TableRow határoz meg egy egy sort a táblázatban: wiki.javaforum.hu/pages/viewpage.action?pageid=9 /

main.xml 9 0 9 0 9 0 <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:background="#0000"> <TextView android:id="@+main/usernamelabel" android:text="@string/usernamelabel" android:gravity="right" android:paddingright="px" android:layout_weight="" <EditText android:id="@+main/usernamefield" android:text="@string/usernamefield" android:layout_weight="" /> <TextView android:id="@+main/passwordlabel" android:text="@string/passwordlabel" android:gravity="right" android:paddingright="px" android:layout_weight="" <EditText android:id="@+main/passwordfield" android:text="@string/passwordfield" android:password="true" android:layout_weight="" <Button android:id="@+main/signinbutton" android:text="@string/signinlabel" android:layout_span="" android:layout_weight=""/> </TableLayout> Az XML tartalmaz néhány újabb attribútumot, amely ismeretlen lehet: android:gravity, az igazodás iránya a rendelkezésre álló cellában. Értéke lehet left, center_horizontal illetve right, amelyek balra, középre vagy jobbra igazítják a komponenst. android:padding, a komponens körül hagyott üres hely. Az Android a komponenseket szorosan egymás mellé igazítja, amely néha rondán néz ki, ilyen esetben meg kell adnunk padding értéket. Ha nem szeretnénk minden oldalra azonos mérető helyet, akkor használhatjuk a paddingleft, a paddingtop, a paddingright, illetve a paddingbottom attribútumokat. android:layout_weight, a komponens súlya. Ha egymás mellé teszünk több komponenst azzal az utasítással, hogy töltsék ki a szabad helyet, akkor az Android egyenlő arányban osztja ki rendelkezésre álló területet. Ezt tudjuk befolyásolni súlyozással: amelyik komponensnek nagyobb súlyt adunk, az fog több helyet elfoglalni. A fenti példában a beviteli mezők nagyobb súlyt kapnak a címkékkel szemben. android:layout_span, az elfoglalt cellák száma. Ha egy sorba kevesebb komponens kerül, mint amennyi cella adódik a táblázatban, akkor ezzel az attribútummal jelezhetjük, hogy a komponens több cellába is terjeszkedhet. A TableLayout táblázata annyi sort tartalmaz, amennyi TableRow meg van adva az XML ben, illetve annyi oszlopa van, amennyi adódik a komponensek számából. Nézzük az eredményt: wiki.javaforum.hu/pages/viewpage.action?pageid=9 /

... ScrollView Ha olyan programot fejlesztünk, amelynek a komponensei nem férnek el a kijelzőn, akkor egyszerűen bele kell tennünk egy ScrollView konténerbe, és a platform gondoskodik a görgetésről: wiki.javaforum.hu/pages/viewpage.action?pageid=9 /

main.xml 9 0 9 0 9 0 9 0 <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+main/messagelayout" android:background="#0000" > <TextView android:id="@+main/usernamelabel" android:text="@string/usernamelabel" <EditText android:id="@+main/usernamefield" android:text="@string/usernamefield" android:layout_weight=""/> <TextView android:id="@+main/messagelabel" android:text="@string/messagelabel" <ScrollView android:id="@+main/messagescrollview" android:background="#0000" android:layout_weight=""> <EditText android:id="@+main/messagefield" android:padding="0px" android:layout_weight=""/> </ScrollView> <Button android:id="@+main/sendbutton" android:text="@string/sendlabel" /> </TableLayout> Figyeljük meg, hogy sehol nem adtunk meg konkrét méretet, ellenben a komponensek súlyát meghatároztuk: erre érdemes ügyelni, mivel az Android platform változatos képernyőméreteken is képes futni, így nem tudhatjuk előre, mekkora helyet kell lefoglalnunk az alkalmazásunk számára. Ha van némi időnk, akkor célszerű több elterjedt méretben megtekinteni a programunk ablakait. Ha elindítjuk a fenti layoutprogramját, akkor az alábbi képernyőt kell látnunk: wiki.javaforum.hu/pages/viewpage.action?pageid=9 /

Pont úgy néz ki, mint ahogy szokott, egyedül az üzenet beviteli mezője lehet fura, mivel zöld a háttere, ugyanis a ScrollViewhátterét zöldre színeztük. Kezdjünk bele írni: wiki.javaforum.hu/pages/viewpage.action?pageid=9 /

A szövegbeviteli mező elkezd hízni és kezdi felzabálni a rendelkezésre álló helyet, a Send gomb lassan eltűnik a virtuális billentyűzet mögött, ám görgető sávnak még nyoma nincs. Ez a viselkedés a súlyozásból ered, mind az EditText, mind a ScrollViewsúlyozott komponens, tehát a többi rovására fog növekedni, ám a képernyő határait elérve megjelenik a görgető sáv: wiki.javaforum.hu/pages/viewpage.action?pageid=9 /

Ahogy látszik, a beviteli mező egészen a virtuális billentyűzetig növekszik, majd görgethetővé válik a tartalma. Ha eltűntetjük a virtuális billentyűzetet, akkor a beviteli mező fel tudja venni a keletkező helyet és el is tűnik a görgető sáv: wiki.javaforum.hu/pages/viewpage.action?pageid=9 9/

... TabHost és TabWidget Ha egy képernyőn nem fér el minden beviteli mező, akkor érdemes a füles konténerhez nyúlni, amely lehetővé teszi, hogy a felhasználó egy Activity n belül több képernyőnyi bevitelt végezhessen el. Kissé nehézkessé sikeredett ez a konténer, de idővel talán egyszerűbb lesz a használata. Nézzünk példát egy olyan képernyőtervre, ahol meg kell adni nevet jelszót és opcionálisan a proxy szervert: main.xml 9 0 <TabHost xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+main/tabhost" > <TabWidget android:id="@android:id/tabs" android:layout_height="wrap_content" <FrameLayout android:id="@android:id/tabcontent" android:paddingtop="0px" > <TableLayout android:id="@+main/logintable" android:background="#0000"> <TextView android:id="@+main/usernamelabel" android:text="@string/usernamelabel" wiki.javaforum.hu/pages/viewpage.action?pageid=9 0/

9 0 9 0 9 0 9 0 9 0 9 0 9 0 android:gravity="right" android:paddingright="px" android:layout_weight="" <EditText android:id="@+main/usernamefield" android:text="@string/usernamefield" android:layout_weight="" /> <TextView android:id="@+main/passwordlabel" android:text="@string/passwordlabel" android:gravity="right" android:paddingright="px" android:layout_weight="" <EditText android:id="@+main/passwordfield" android:text="@string/passwordfield" android:password="true" android:layout_weight="" <Button android:id="@+main/signinbutton" android:text="@string/signinlabel" android:layout_span="" android:layout_weight=""/> </TableLayout> <TableLayout android:id="@+main/proxytable" android:background="#0000"> <TextView android:id="@+main/hostlabel" android:text="@string/hostlabel" android:gravity="right" android:paddingright="px" android:layout_weight="" <EditText android:id="@+main/hostfield" android:text="@string/hostfield" android:layout_weight="" /> <TextView android:id="@+main/portlabel" android:text="@string/portlabel" android:gravity="right" android:paddingright="px" android:layout_weight="" <EditText android:id="@+main/portfield" android:text="@string/portfield" android:password="true" android:layout_weight="" wiki.javaforum.hu/pages/viewpage.action?pageid=9 /

9 <CheckBox android:id="@+main/useit" android:text="@string/useitlabel" android:layout_span="" android:layout_weight=""/> </TableLayout> </FrameLayout> </TabHost> A TabHost konténer fogja közre azt, amit szeretnénk a fülekben használni, benne egy TabWidget adja a fülek rajzolatát, s ez után egy FrameLayoutblokkba kell tennünk azokat a komponenseket, amelyeket a fülekre szánunk. Három dologra kell figyelnünk: A TabWidget a TabHost első gyereke legyen, s az azonosítója @android:id/tabs kell legyen. A TabWidget után következő bejegyzés egy FrameLayout kell legyen @android:id/tabcontent azonosítóval. A FrameLayout tartalmazzon egy paddingtop attribútumot, amelyben a fülek magasságát adjuk meg. Az XML után még pár sort kell írnunk a programba is: Java 9 0 9 0 super.oncreate(savedinstancestate); try { setcontentview(r.layout.main); final TabHost tabs = (TabHost) findviewbyid(r.main.tabhost); tabs.setup(); TabHost.TabSpec loginspec = tabs.newtabspec("logintable"); loginspec.setcontent(r.main.logintable); loginspec.setindicator("login"); tabs.addtab(loginspec); TabHost.TabSpec proxyspec = tabs.newtabspec("proxytable"); proxyspec.setcontent(r.main.proxytable); proxyspec.setindicator("proxy"); tabs.addtab(proxyspec); tabs.setcurrenttab(0); } catch (Exception except) { TextView textview = new TextView(this); final Writer result = new StringWriter(); final PrintWriter printwriter = new PrintWriter(result); except.printstacktrace(printwriter); textview.settext(result.tostring()); setcontentview(textview); } Mindezek után a szövegek közé fel kell vennünk az új hivatkozásokat: wiki.javaforum.hu/pages/viewpage.action?pageid=9 /

strings.xml 9 0 <resources> <string name="app_name">hellojavaforum</string> <string name="usernamelabel">username:</string> <string name="usernamefield">username</string> <string name="passwordlabel">password:</string> <string name="passwordfield">type here</string> <string name="signinlabel">send</string> <string name="hostlabel">host:</string> <string name="hostfield"></string> <string name="portlabel">port:</string> <string name="portfield"></string> <string name="useitlabel">use proxy</string> </resources> S már kész is vagyunk, lássuk ezt működés közben:... Egyéb konténerek Létezik még néhány konténer, amelyek közül tudunk válogatni: FrameLayout, amely olyan, mint egy kártyapakli, az újonnan hozzáadott elem eltakarja a régebbieket (lásd előző fejezet). RelativeLayout, amely esetén egy már meglévő komponenshez tudjuk hozzáragasztani az újabbat. AbsoluteLayout, amelynél pontosan meg kell mondanunk, hogy a komponensek hova kerüljenek és wiki.javaforum.hu/pages/viewpage.action?pageid=9 /

mekkora helyet foglaljanak. Your Rating: Results: rates 0 Tetszik 0 Küldés wiki.javaforum.hu/pages/viewpage.action?pageid=9 /