Atrybuty rozmiaru komponentów w układzie widoku.

Otwieramy nowy projekt wybierając pustą aktywność. Zmień nazwę aktywności z MainActivity na OknoGlowne oraz nazwę widoku (folder layout) z activity_main na activity_okno_glowne. Sposób zmiany nazw opisany jest w temacie Pierwsza aplikacja.

W pliku widoku aktywności (res/layout/activity_okno_glowne.xml) określamy układ pionowy (vertical) dla widoku aktywności LinearLayout.

Wskazówka:


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    style="?android:attr/buttonBarStyle"
    android:orientation="vertical">
</LinearLayout>

W aktywności osadź sześć kontrolek typu Button

Android Studio LinearLayout

Przejdź do zawartości pliku activity_okno_glowne.xml i zwróć uwagę na automatycznie przypisane właściwości kontrolek Button

Wskazówka:


<Button
    android:id="@+id/button"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Button" />

Co poszczególne linie formatowania oznaczają?

android: odwołanie do podanej przestrzeni nazw, standardowo przestrzeń o nazwie android jest zdefiniowana zaraz na początku pliku xml, patrz xmlns:android=http://schemas.android.com/apk/res/android

android:id="@+id/button" identyfikator komponentu

android:layout_width="match_parent" oznacza, że element zajmie cały obszar rodzica (czyli w tej sytuacji całą szerokość ekranu)

android:layout_height="wrap_content" oznacza, że element zajmie obszar dostosowany do swojej zawartości

Zmień w wszystkim kontrolką Button parametr szerokości na

android:layout_width="wrap_parent"

Efekt jaki uzyskasz powinien być analogiczny do poniższego

wrap_content Android Studio

Każdy z komponentów zajął jednakową przestrzeń. Projektując układ aktywności można określić przez parametr wagi znaczenie/ wartość / wagę kontrolki. Standardowo waga przypisywana jest na zero. Waga różna od zera przydziela rozmiar kontrolce z uwzględnieniem wag pozostałych kontrolek według poniższej zależności

znaczenie kontrolki z wagi Android Studio

Zmień wagę pierwszego przycisku na 1, a drugiego na 2.

Wskazówka:


<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Button"
    android:layout_weight="1"/>

<Button
    android:id="@+id/button2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Button"
    android:layout_weight="2"/>

Jeżeli pozostałe komponenty maja wagę zero (standardowo) to układ przyjmie postać jak poniżej

layout_weight Android Studio

Jeżeli dla pierwszych dwóch przycisków zmienisz szerokość na dostępną po rodzicu

Wskazówka:


<Button
    android:id="@+id/button"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Button"
    android:layout_weight="1"/>

<Button
    android:id="@+id/button2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Button"
    android:layout_weight="2"/>

To układ zachowa się jak poniżej.

layout_weight Android Studio

Przykładowo waga dla drugiego klawisza będzie wyliczona jak poniżej

obliczanie obszaru z wagi Android Studio

W wyniku czego, klawisz drugi zajmie 2/3 dostępnego rozmiaru.

Jednostki rozmiaru

Rozmiary kontrolek można określać przez podanie ich wymiaru, czyli własnych rozmiarów komponentów. W przypadku urządzeń opartych na Androidzie nie sprawdzają się wymiary podane w pikselach. Jest to związane z różnymi gęstościami ekranów.

Zalecaną jednostką jest jednostka dip (Density-independent Pixels). Skrótowo oznaczana dp. Jeden dp (1 dp) odpowiada jednemu pikselowi na ekranie o gęstości 160 dpi. Stosowanie jednostki dp gwarantuj podobny układ widoku na różnych urządzeniach.

Inne jednostki

Uogólnione wartości gęstości pikseli w systemie Android

Uogólnione wartości gęstości pikseli w systemie Android wynikające z różnej gęstości ekranów klasyfikują się jak poniżej

Jeżeli działanie aplikacji wymaga odczytania rzeczywistej liczby pikseli zajmowanej przez element, którego rozmiar jest podany w jednostkach dp, przelicza się jak poniżej

ilośc pikseli Android Studio

Sprawdź jak zachowa się kontrolka trzeciego przycisku po wprowadzeniu takich wartości

Wskazówka:


<Button
    android:id="@+id/button3"
    android:layout_width="192dp"
    android:layout_height="128dp"
    android:text="Button"/>
jednostka dp Android Studio

Położenie kontrolki/ obiektu w układzie

Jednym ze sposobów określania położenia kontrolek w widoku układu jest atrybut android:layout_gravity

UWAGA. W zależności od przyjętego układu layout nie wszystkie atrybuty będą działać.

Sprawdź działanie poniższej zmiany w kodzie układu widoku

Wskazówka:


<Button
    android:id="@+id/button4"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Button"
    android:layout_gravity="right"/>

Efekt zmian

layout_gravity Android Studio

Inne często używane właściwości formatujące komponenty

Alkomat- wirtualny test

Alkomat- darmowa aplikacja na Androida

Pobierz ze sklepu Google Play
Olinowanie stałe- kalkulator średnic

Olinowanie stałe- darmowa aplikacja na Androida

Pobierz ze sklepu Google Play
przepis na gogfry

Przepis na gofry

zobacz
przepis na bitą śmietanę

Przepis na bitą śmietanę

zobacz