Zasób układu
Zadbaj o dobrą organizację dzięki kolekcji
Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.
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ż:
-
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-09-20 UTC.
[[["Łatwo zrozumieć","easyToUnderstand","thumb-up"],["Rozwiązało to mój problem","solvedMyProblem","thumb-up"],["Inne","otherUp","thumb-up"]],[["Brak potrzebnych mi informacji","missingTheInformationINeed","thumb-down"],["Zbyt skomplikowane / zbyt wiele czynności do wykonania","tooComplicatedTooManySteps","thumb-down"],["Nieaktualne treści","outOfDate","thumb-down"],["Problem z tłumaczeniem","translationIssue","thumb-down"],["Problem z przykładami/kodem","samplesCodeIssue","thumb-down"],["Inne","otherDown","thumb-down"]],["Ostatnia aktualizacja: 2024-09-20 UTC."],[],[]]