Layouts

Controalele Android fac parte din cadrul unui grup (obiect de tip android.view.ViewGroup) care definește și modul în care acestea sunt dispuse în cadrul interfeței grafice precum și dimensiunile pe care le pot lua, motiv pentru care o astfel de componentă este referită și sub denumirea de layout. Acest element nu vizează însă tratarea evenimentelor legate de interacțiunea cu utilizatorul.

În Android, denumirea de layout este utilizată și pentru fișierele de resurse care definesc interfața grafică corespunzătoare unei activități, a unui fragment sau a unui alt element din interfața grafică, plasate în /res/layout (respectiv în /res/layout-land). Acestea nu trebuie însă confundate cu tipurile de controale care gestionează mecanismul de dispunere a diferitelor elemente grafice în cadrul interfeței.

Cele mai utilizate tipuri de grupuri de componente vizuale sunt LinearLayout, AbsoluteLayout, RelativeLayout, FrameLayout, TableLayout și GridLayout.

Elementele de tip layout pot fi imbricate (conținute) unele într-altele, astfel încât se pot proiecta interfețe grafice în care modul de dispunere al controalelor să fie foarte complex, prin combinarea funcționalităților pe care le oferă fiecare dintre componentele de tip ViewGroup. Restricția care trebuie respectată în acest caz este ca spațiile de nume indicate prin proprietatea xmlns să fie precizate doar o singură dată, de obiectul layout rădăcină.

Fiecare clasă de tip layout are și o clasă internă LayoutParams în care proprietățile referitoare la dimensiuni și margini sunt reținute în obiecte de tip layout_.... Ele vor fi aplicate tuturor controalelor grafice conținute. Cele mai frecvent utilizate atribute sunt:

  • layout_height, layout_width - definesc lățimea și înălțimea componentei, putând avea valorile:

    • match_parent - va ocupa tot spațiul pus la dispoziție de componenta în care este conținută (fără padding);
    • wrap_content - va ocupa doar spațiul solicitat de componentele pe care le conține (cu padding);
    • o valoare indicată explicit împreună cu unitatea de măsură.
  • layout_weight - proporția pe care o ocupă în raport cu alte componente;

  • weightSum - suma proporțiilor tuturor controalelor grafice conținute; valoarea implicită este 1;

  • layout_gravity - modul în care componenta este aliniată în cadrul grupului din care face parte (valorile posibile pe care le poate lua această proprietate sunt: top, botttom, left, right, center_vertical, center_horizontal, center (centrare pe ambele direcții), fill_vertical, fill_horizontal, fill (ocuparea spațiului pe ambele direcții), clip_vertical, clip_horizontal; aceste valori pot fi combinate prin intermediul operatorului | (pe biți);