Zasób szablonu definiuje architekturę interfejsu użytkownika w interfejsie Activity
lub
elementu interfejsu.
- lokalizacja pliku:
- ) 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ć atrybutxmlns:android
z atrybutemandroid
jak w poprzednim przykładzie składni. - elementy:
-
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ędzieaapt
tworzy nową liczbę całkowitą zasobu w klasieR.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ę doTextView
, 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ściandroid: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
iViewGroup
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 MetodaonCreate()
: -
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ż:
res/layout/filename.xml
(