Zasób układu

Zasób szablonu definiuje architekturę interfejsu użytkownika w interfejsie Activity lub elementu interfejsu.

lokalizacja pliku:

res/layout/filename.xml(
) Nazwa pliku jest używana jako identyfikator zasobu.
skompilowany typ danych zasobu:
Wskaźnik zasobu do zasobu View (lub podklasy)
odniesienie do zasobu:
W języku Java: R.layout.filename
W pliku XML: @[package:]layout/filename
składnia:
<?xml version="1.0" encoding="utf-8"?>
<ViewGroup
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@[+][package:]id/resource_name"
    android:layout_height=["dimension" | "match_parent" | "wrap_content"]
    android:layout_width=["dimension" | "match_parent" | "wrap_content"]
    [ViewGroup-specific attributes] >
    <View
        android:id="@[+][package:]id/resource_name"
        android:layout_height=["dimension" | "match_parent" | "wrap_content"]
        android:layout_width=["dimension" | "match_parent" | "wrap_content"]
        [View-specific attributes] >
        <requestFocus/>
    </View>
    <ViewGroup >
        <View />
    </ViewGroup>
    <include layout="@layout/layout_resource"/>
</ViewGroup>

Uwaga: elementem głównym może być ViewGroup, View lub <merge>, ale możliwe, że będzie tylko musi zawierać jeden element główny i musi on zawierać atrybut xmlns:android z atrybutem android jak w poprzednim przykładzie składni.

elementy:
<ViewGroup>
Kontener innych elementów View. Jest ich wiele różne rodzaje obiektów ViewGroup. Każdy z nich pozwala określają różne układy elementów podrzędnych. Różne rodzaje ViewGroup obiektów to LinearLayout, RelativeLayout i FrameLayout.

Nie zakładaj, że jakiekolwiek pochodne ViewGroup akceptuje widoki zagnieżdżone. Niektóre grupy widoków są implementacje klasy AdapterView, która określa jego dzieci tylko z Adapter.

Atrybuty:

android:id
Identyfikator zasobu. Unikalna nazwa zasobu dla elementu, którą możesz podać możesz użyć, aby uzyskać odniesienie do ViewGroup ze swojej aplikacji. Więcej informacje znajdziesz w sekcji Wartość identyfikatora android:id.
android:layout_height
Wymiar lub słowo kluczowe. Wymagany. Wysokość grupy podana jako wartości wymiaru (lub zasób wymiaru) lub słowo kluczowe ("match_parent" lub "wrap_content"). Aby dowiedzieć się więcej, zobaczyć wartości dla parametrów android:layout_height oraz android:layout_width.
android:layout_width
Wymiar lub słowo kluczowe. Wymagany. Szerokość grupy podana jako wartości wymiaru (lub zasób wymiaru) lub słowo kluczowe ("match_parent" lub "wrap_content"). Aby dowiedzieć się więcej, zobaczyć wartości dla parametrów android:layout_height oraz android:layout_width.

ViewGroup klasa bazowa obsługuje więcej atrybutów, a każda implementacja ViewGroup Aby zobaczyć wszystkie dostępne atrybuty, zapoznaj się z odpowiednią dokumentacją klas ViewGroup, na przykład plik XML LinearLayout .

<View>
Pojedynczy komponent interfejsu nazywany widżetem. Inna rodzaje obiektów View to TextView, Button i CheckBox.

Atrybuty:

android:id
Identyfikator zasobu. Unikalna nazwa zasobu elementu, której możesz używać do uzyskać odniesienie do: View ze swojej aplikacji. Więcej informacje znajdziesz w sekcji Wartość identyfikatora android:id.
android:layout_height
Wymiar lub słowo kluczowe. Wymagany. Wysokość elementu podana w postaci wartość wymiaru (albo zasób wymiaru) lub słowo kluczowe ("match_parent" lub "wrap_content"). Aby dowiedzieć się więcej, zobaczyć wartości dla parametrów android:layout_height oraz android:layout_width.
android:layout_width
Wymiar lub słowo kluczowe. Wymagany. Szerokość elementu, podana w postaci wartość wymiaru (albo zasób wymiaru) lub słowo kluczowe ("match_parent" lub "wrap_content"). Aby dowiedzieć się więcej, zobaczyć wartości dla parametrów android:layout_height oraz android:layout_width.

View klasa bazowa obsługuje więcej atrybutów, a każda implementacja View Więcej informacji znajdziesz w artykule Układy. Dla: zestawienie wszystkich dostępnych atrybutów, zapoznaj się z odpowiednią dokumentacją, na przykład atrybutami XML TextView.

<requestFocus>
Każdy element reprezentujący obiekt View może zawierać ten pusty element, co powoduje, że element nadrzędny skupia się na ekranie. Możesz mieć tylko jeden z tych elementów elementów na plik.
<include>
Zawiera plik układu w tym układzie.

Atrybuty:

layout
Zasób układu. Wymagany. Odniesienie do układu .
android:id
Identyfikator zasobu. Zastępuje identyfikator podany widokowi głównemu w uwzględnionym układzie.
android:layout_height
Wymiar lub słowo kluczowe. Zastępuje wysokość podaną widokowi głównemu w zawartego układu. Działa tylko wtedy, gdy zadeklarowano również android:layout_width.
android:layout_width
Wymiar lub słowo kluczowe. Zastępuje szerokość podaną widokowi głównemu w zawartego układu. Działa tylko wtedy, gdy zadeklarowano również android:layout_height.

Element <include> może zawierać dowolne inne atrybuty układu, które są są obsługiwane przez element główny w uwzględnionym układzie i zastępują te zdefiniowane pierwiastek.

Uwaga: jeśli chcesz zastąpić atrybuty układu za pomocą tagu <include>, musisz zastąpić oba android:layout_height i android:layout_width w kolejności inne atrybuty układu.

Innym sposobem dołączenia układu jest użycie elementu ViewStub: lekkiej który nie zajmuje przestrzeni układu, dopóki go nie nadasz. Zawiera on wtedy tag pliku układu zdefiniowanego przez jego atrybut android:layout. Więcej informacji o korzystaniu z ViewStub znajdziesz w sekcji Wczytywanie wyświetleń na żądanie.

<merge>
Alternatywny element główny, który nie jest narysowany w hierarchii układu. Użycie tego jako parametru Element główny jest przydatny, gdy wiesz, że ten układ jest umieszczony w układzie który zawiera już odpowiedni element nadrzędny View, który zawiera elementy podrzędne argumentu <merge>.

Jest to szczególnie przydatne, gdy chcesz uwzględnić ten układ w innym pliku układu, używając tagów <include> i ten układ nie wymaga innego kontenera ViewGroup. Więcej informacje o scalaniu układów znajdziesz w artykule Ponowne używanie układów z elementem <include>.

Wartość w polu android:id

Jako wartości identyfikatora zazwyczaj używa się takiej składni składni: "@+id/name", jak pokazano w tym przykładzie. symbol plusa (+) oznacza, że jest to nowy identyfikator zasobu, a narzędzie aapt tworzy nową liczbę całkowitą zasobu w klasie R.java, jeśli jeszcze nie istnieje.

<TextView android:id="@+id/nameTextbox"/>

Nazwa nameTextbox jest teraz identyfikatorem zasobu dołączonym do tego elementu. Następnie możesz: odwołują się do TextView, z którym identyfikator jest powiązany w Javie:

Kotlin

val textView: TextView? = findViewById(R.id.nameTextbox)

Java

TextView textView = findViewById(R.id.nameTextbox);

Ten kod zwraca obiekt TextView.

Jeśli jednak masz już zdefiniowany zasób identyfikatora, ale nie jest on już używanego, możesz zastosować ten identyfikator do elementu View, wykluczając plus w wartości android:id.

Wartości atrybutów android:layout_height i android:layout_width,

Wartości wysokości i szerokości są wyrażone za pomocą dowolnego z wymiar jednostki obsługiwane przez Androida (px, dp, sp, pt, in, mm) lub z tymi słowami kluczowymi:

WartośćOpis
match_parent Ustawia wymiar zgodny z wymiarem elementu nadrzędnego. Dodano w interfejsie API poziomu 8 do: wycofaj usługę fill_parent.
wrap_content Ustawia wymiar tylko na rozmiar wymagany do dopasowania zawartości tego elementu.

Elementy widoku niestandardowego

Możesz tworzyć niestandardowe View i ViewGroup i stosują je do układu w taki sam sposób jak w układzie standardowym. . Możesz też określić atrybuty obsługiwane w elemencie XML. Aby dowiedzieć się więcej, Więcej informacji znajdziesz w artykule o tworzeniu komponentów widoku niestandardowego.

przykład:
Plik XML zapisany o res/layout/main_activity.xml:
<?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"
              android:orientation="vertical" >
    <TextView android:id="@+id/text"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="Hello, I am a TextView" />
    <Button android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hello, I am a Button" />
</LinearLayout>

Ten kod aplikacji wczytuje układ dla Activity w Metoda onCreate():

Kotlin

public override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.main_activity)
}

Java

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_activity);
}
zobacz też: