Zasób układu
Zadbaj o dobrą organizację dzięki kolekcji
Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.
Zasób układu określa architekturę interfejsu w elemencie Activity
lub jego komponent.
- lokalizacja pliku:
res/layout/filename.xml
Jako identyfikator zasobu jest używana nazwa pliku.
- typ danych skompilowanych zasobów:
- Wskaźnik zasobu do zasobu
View
(lub podklasy)
- odniesienie do zasobów:
-
W Javie:
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ć element ViewGroup
, View
lub <merge>
, ale może on zawierać tylko 1 element główny i musi zawierać atrybut xmlns:android
z przestrzenią nazw android
, tak jak w poprzednim przykładzie składni.
- elementy:
-
<ViewGroup>
- Kontener na inne elementy
View
. Jest wiele różnych rodzajów obiektów ViewGroup
, a każdy pozwala określić układ elementów podrzędnych na różne sposoby. Różne rodzaje obiektów ViewGroup
to LinearLayout
, RelativeLayout
i FrameLayout
.
Nie zakładaj, że żadne pochodne elementu ViewGroup
akceptują widoki zagnieżdżone. Niektóre grupy widoków danych są wdrożeniami klasy AdapterView
, która określa jej elementy podrzędne tylko na podstawie klasy Adapter
.
Atrybuty:
android:id
- Identyfikator zasobu. Unikalna nazwa zasobu elementu, która umożliwia uzyskanie z aplikacji odniesienia do
ViewGroup
. Więcej informacji znajdziesz w sekcji Wartość parametru android:id.
android:layout_height
- Wymiar lub słowo kluczowe. Wymagany. Wysokość grupy jako wartość wymiaru (lub zasób wymiaru) albo słowo kluczowe (
"match_parent"
lub "wrap_content"
). Więcej informacji znajdziesz w sekcji Wartości atrybutów android:layout_height i android:layout_width.
android:layout_width
- Wymiar lub słowo kluczowe. Wymagany. Szerokość grupy jako wartość wymiaru (lub zasób wymiaru) albo słowo kluczowe (
"match_parent"
lub "wrap_content"
). Więcej informacji znajdziesz w sekcji Wartości atrybutów android:layout_height i android:layout_width.
Klasa podstawowa ViewGroup
obsługuje więcej atrybutów, a każda implementacja ViewGroup
obsługuje jeszcze wiele innych. Informacje o wszystkich dostępnych atrybutach znajdziesz w dokumentacji dotyczącej klasy ViewGroup
, np. w atrybutach XML LinearLayout
.
<View>
- Indywidualny komponent interfejsu, ogólnie nazywany widżetem. Różne rodzaje obiektów
View
to TextView
, Button
i CheckBox
.
Atrybuty:
android:id
- Identyfikator zasobu. Unikalna nazwa zasobu dla elementu, która umożliwia uzyskanie odniesienia do
View
z aplikacji. Więcej informacji znajdziesz w sekcji Wartość parametru android:id.
android:layout_height
- Wymiar lub słowo kluczowe. Wymagany. Wysokość elementu jako wartość wymiaru (lub zasób wymiaru) albo słowo kluczowe (
"match_parent"
lub "wrap_content"
). Więcej informacji znajdziesz w sekcji Wartości atrybutów android:layout_height i android:layout_width.
android:layout_width
- Wymiar lub słowo kluczowe. Wymagany. Szerokość elementu w postaci wartości wymiaru (lub zasobu wymiaru) albo słowa kluczowego (
"match_parent"
lub "wrap_content"
). Więcej informacji znajdziesz w sekcji Wartości atrybutów android:layout_height i android:layout_width.
Klasa podstawowa View
obsługuje więcej atrybutów, a każda implementacja View
obsługuje jeszcze wiele innych. Więcej informacji znajdziesz w sekcji Układy. Dokumentacja wszystkich dostępnych atrybutów znajdziesz w dokumentacji referencyjnej, np. w atrybutach XML TextView
.
<requestFocus>
- Każdy element reprezentujący obiekt
View
może zawierać ten pusty element, dzięki czemu obiekt nadrzędny na pierwszym planie pojawia się na ekranie. W jednym pliku możesz mieć tylko jeden z tych elementów.
<include>
- Zawiera plik układu do tego układu.
Atrybuty:
layout
- Zasób Układ. Wymagany. odwołanie do zasobu układu,
android:id
- Identyfikator zasobu. Zastępuje identyfikator podany do widoku głównego w uwzględnionym układzie.
android:layout_height
- Wymiar lub słowo kluczowe. Zastępuje wysokość podaną w widoku głównym w uwzględnionym układzie. Ma zastosowanie tylko wtedy, gdy zadeklarowano również właściwość
android:layout_width
.
android:layout_width
- Wymiar lub słowo kluczowe. Zastępuje szerokość przypisaną do widoku głównego w uwzględnionym układzie. Ma zastosowanie tylko wtedy, gdy zadeklarowano również właściwość
android:layout_height
.
W elemencie <include>
możesz uwzględnić dowolne inne atrybuty układu, które są obsługiwane przez element główny w uwzględnionym układzie. Zastępują one atrybuty zdefiniowane w elemencie głównym.
Uwaga: jeśli chcesz zastąpić atrybuty układu za pomocą tagu <include>
, musisz zastąpić zarówno atrybuty android:layout_height
, jak i android:layout_width
, aby działały inne atrybuty układu.
Innym sposobem na uwzględnienie układu jest użycie ViewStub
– lekkiego widoku, który nie zajmuje miejsca, dopóki go nie zwiększysz. Będzie on wtedy zawierał plik układu zdefiniowany przez atrybut android:layout
. Więcej informacji o korzystaniu z ViewStub
znajdziesz w artykule Wczytywanie widoków na żądanie.
<merge>
- Alternatywny element główny, który nie jest narysowany w hierarchii układu. Używanie go jako elementu głównego jest przydatne, gdy wiesz, że ten układ jest umieszczony w układzie, który zawiera już odpowiedni element nadrzędny
View
do przechowywania elementów podrzędnych elementu <merge>
.
Jest to szczególnie przydatne, gdy chcesz uwzględnić ten układ w innym pliku układu za pomocą <include>
i nie wymaga on innego kontenera ViewGroup
. Więcej informacji o scalaniu układów znajdziesz w artykule Ponowne używanie układów z elementem <include>.
Wartość parametru android:id
W przypadku wartości identyfikatora zwykle używa się takiej składni: "@+id/name"
, jak pokazano w tym przykładzie. Symbol plusa (+
) wskazuje, ż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 elementu nameTextbox
jest teraz identyfikatorem zasobu dołączonym do tego elementu. Możesz wtedy odwołać się do elementu 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 i nie jest on jeszcze używany, możesz go zastosować do elementu View
, wykluczając symbol plusa w wartości android:id
.
Wartości android:layout_height i android:layout_width
Wartości wysokości i szerokości są wyrażane w dowolnej jednostce wymiarów obsługiwanych przez Androida (px, dp, sp, pt, in, mm) lub za pomocą tych słów kluczowych:
Wartość | Opis |
match_parent |
Ustawia wymiar w taki sposób, by pasował do elementu nadrzędnego. Dodano w interfejsie API na poziomie 8 w celu wycofania fill_parent . |
wrap_content |
Ustawia wymiar tylko na potrzeby dopasowania do treści tego elementu. |
Elementy widoku niestandardowego
Możesz tworzyć niestandardowe elementy View
i ViewGroup
oraz stosować je do swojego układu tak samo jak w przypadku standardowego elementu. Możesz też określić atrybuty obsługiwane w elemencie XML. 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 elementu Activity
w metodzie 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ż:
-
Treść strony i umieszczone na niej fragmenty kodu podlegają licencjom opisanym w Licencji na treści. Java i OpenJDK są znakami towarowymi lub zastrzeżonymi znakami towarowymi należącymi do firmy Oracle lub jej podmiotów stowarzyszonych.
Ostatnia aktualizacja: 2024-04-02 UTC.
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"Brak potrzebnych mi informacji"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"Zbyt skomplikowane / zbyt wiele czynności do wykonania"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"Nieaktualne treści"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"Problem z tłumaczeniem"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"Problem z przykładami/kodem"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"Inne"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"Łatwo zrozumieć"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"Rozwiązało to mój problem"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"Inne"
}]
{
"last_modified": "Ostatnia aktualizacja: 2024-04-02 UTC.",
"state": ""
}