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ć atrybutxmlns:android
z przestrzenią nazwandroid
, tak jak w poprzednim przykładzie składni. - elementy:
-
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ędzieaapt
tworzy nową liczbę całkowitą zasobu w klasieR.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 elementuTextView
, 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ściandroid: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
iViewGroup
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 metodzieonCreate()
: -
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ż: