Pojęcia i implementacja Jetpack Compose
Android Studio obsługuje różne atrybuty XML w przestrzeni nazw tools, które umożliwiają korzystanie z funkcji czasu projektowania, takich jak układ do wyświetlenia we fragmencie, lub zachowań czasu kompilowania, takich jak tryb zmniejszania, który ma być stosowany do zasobów XML. Podczas tworzenia aplikacji narzędzia do kompilacji usuwają te atrybuty, dzięki czemu nie mają one wpływu na rozmiar pliku APK ani na działanie aplikacji.
Aby użyć tych atrybutów, dodaj przestrzeń nazw tools do elementu głównego każdego pliku XML, w którym chcesz ich użyć, jak pokazano poniżej:
<RootTag xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" >
Atrybuty obsługi błędów
Ten atrybut pomaga ukrywać komunikaty ostrzegawcze linta:
tools:targetApi
Przeznaczenie: dowolny element
Używane przez: Lint
Ten atrybut działa tak samo jak adnotacja @TargetApi w kodzie Java. Umożliwia określenie poziomu interfejsu API (jako liczby całkowitej lub kryptonimu), który obsługuje ten element.
Dzięki temu narzędzia będą wiedzieć, że ten element i wszystkie elementy podrzędne są używane tylko na określonym poziomie interfejsu API lub wyższym. Dzięki temu narzędzie lint nie będzie wyświetlać ostrzeżeń, jeśli dany element lub jego atrybuty nie są dostępne na poziomie interfejsu API określonym jako minSdkVersion.
Możesz na przykład użyć tego atrybutu, ponieważ GridLayout jest dostępny tylko na poziomie interfejsu API 14 lub wyższym, ale wiesz, że ten układ nie jest używany w kodzie w przypadku niższych wersji:
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:targetApi="14" >
(Zalecamy jednak używanie zamiast tego GridLayout z biblioteki pomocy).
Atrybuty widoku w czasie projektowania
Te atrybuty definiują cechy układu, które są widoczne tylko w podglądzie układu w Android Studio.
tools: zamiast android:
Przeznaczenie: <View>
Używane przez: edytor układu Android Studio
Możesz wstawić przykładowe dane w podglądzie układu, używając prefiksu tools: zamiast android: z dowolnym atrybutem <View> z platformy Androida.
Jest to przydatne, gdy wartość atrybutu nie jest wypełniana aż do czasu działania i chcesz zobaczyć efekt w podglądzie układu.
Jeśli na przykład wartość atrybutu android:text jest ustawiana w czasie działania lub chcesz zobaczyć układ z wartością inną niż domyślna, możesz dodać tools:text, aby określić tekst tylko na potrzeby podglądu układu.
tools:text ustawia „Google Voice” jako wartość podglądu układu.Możesz dodać zarówno atrybut przestrzeni nazw android:, który jest używany w czasie działania, jak i pasujący atrybut tools:, który zastępuje atrybut czasu działania tylko w podglądzie układu.
Możesz też użyć atrybutu tools:, aby cofnąć ustawienie atrybutu tylko w podglądzie układu. Jeśli na przykład masz element FrameLayout z 2 elementami podrzędnymi, ale chcesz, aby w podglądzie układu był widoczny tylko jeden z nich, możesz ustawić jeden z nich jako niewidoczny w podglądzie układu, jak pokazano poniżej:
<Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="First" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Second" tools:visibility="invisible" />
Gdy korzystasz z edytora układu w widoku projektu, w oknie Właściwości możesz edytować niektóre atrybuty widoku w czasie projektowania. Każdy atrybut czasu projektowania jest oznaczony ikoną klucza
obok nazwy atrybutu, aby odróżnić go od rzeczywistego atrybutu o tej samej nazwie.
tools:context
Przeznaczenie: dowolny certyfikat główny <View>
Używane przez: Lint, edytor układu Android Studio
Ten atrybut określa, z jaką aktywnością jest domyślnie powiązany ten układ. Umożliwia to korzystanie z funkcji w edytorze lub podglądzie układu, które wymagają znajomości aktywności, takich jak motyw układu w podglądzie i miejsce wstawiania modułów obsługi onClick wygenerowanych z szybkiej poprawki, jak pokazano na rysunku 2.
onClick działa tylko wtedy, gdy ustawiono tools:context.Możesz określić nazwę klasy aktywności, używając tego samego prefiksu z kropką co w pliku manifestu (bez pełnej nazwy pakietu).
Na przykład:
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity" >
tools:itemCount
Przeznaczenie: <RecyclerView>
Używane przez: edytor układu w Android Studio
W przypadku danego elementu RecyclerView ten atrybut określa liczbę elementów, które edytor układu powinien wyrenderować w oknie Podgląd.
Na przykład:
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:itemCount="3"/>
tools:layout
Przeznaczenie: <fragment>
Używane przez: edytor układu Android Studio
Ten atrybut deklaruje, który układ ma być wyświetlany w podglądzie układu we fragmencie, ponieważ podgląd układu nie może wykonać kodu aktywności, który zwykle stosuje układ.
Na przykład:
<fragment android:name="com.example.main.ItemListFragment"
tools:layout="@layout/list_content" />
tools:listitem, tools:listheader, tools:listfooter
Przeznaczenie: <AdapterView> (i podklasy, takie jak <ListView>)
Używane przez: edytor układu Android Studio
Te atrybuty określają, który układ ma być wyświetlany w podglądzie układu elementów, nagłówka i stopki listy. Wszystkie pola danych w układzie są wypełnione treścią numeryczną, np. „Element 1”, dzięki czemu elementy listy nie powtarzają się.
Na przykład:
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:listitem="@layout/sample_list_item"
tools:listheader="@layout/sample_list_header"
tools:listfooter="@layout/sample_list_footer" />
tools:showIn
Przeznaczenie: dowolny element główny <View> w układzie, do którego odwołuje się element <include>
Używane przez: edytor układu Android Studio
Ten atrybut pozwala wskazać układ, który używa tego układu, za pomocą <include>, dzięki czemu możesz wyświetlać podgląd i edytować ten plik w postaci, w jakiej jest osadzony w układzie nadrzędnym.
Na przykład:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:text="@string/hello_world"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:showIn="@layout/activity_main" />
Teraz podgląd układu pokazuje układ TextView w układzie activity_main.
tools:menu
Przeznaczenie: dowolny certyfikat główny <View>
Używane przez: edytor układu Android Studio
Ten atrybut określa, które menu jest wyświetlane w podglądzie układu na pasku aplikacji. Wartość to co najmniej 1 identyfikator menu rozdzielony przecinkami, bez @menu/ ani żadnego innego prefiksu identyfikatora i bez rozszerzenia .xml.
Na przykład:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:menu="menu1,menu2" />
tools:minValue, tools:maxValue
Przeznaczenie: <NumberPicker>
Używane przez: edytor układu Android Studio
Te atrybuty określają minimalne i maksymalne wartości widoku NumberPicker.
Na przykład:
<NumberPicker xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/numberPicker"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:minValue="0"
tools:maxValue="10" />
tools:openDrawer
Przeznaczenie: <DrawerLayout>
Używane przez: edytor układu Android Studio
Ten atrybut umożliwia otwarcie DrawerLayout w podglądzie.
Możesz też zmienić sposób renderowania układu przez edytor układu, przekazując jedną z tych wartości:
Tabela 1. Wartości do modyfikacji sposobu renderowania DrawerLayout przez edytor układu
| Stała | Wartość | Opis |
|---|---|---|
end | 800005 | Przesuń obiekt na koniec kontenera, nie zmieniając jego rozmiaru. |
left | 3 | Przesuń obiekt do lewej krawędzi kontenera, nie zmieniając jego rozmiaru. |
right | 5 | Przesuń obiekt na prawo od kontenera, nie zmieniając jego rozmiaru. |
start | 800003 | Przesuń obiekt na początek kontenera, nie zmieniając jego rozmiaru. |
Na przykład:
<androidx.drawerlayout.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:openDrawer="start" />
"@tools:sample/*" zasobu
Przeznaczenie: dowolny widok, który obsługuje tekst lub obrazy interfejsu.
Używane przez: edytor układu w Android Studio
Ten atrybut umożliwia wstawianie do widoku danych lub obrazów zastępczych. Jeśli na przykład chcesz sprawdzić, jak układ zachowuje się z tekstem, zanim sfinalizujesz tekst interfejsu aplikacji, możesz użyć tekstu zastępczego w ten sposób:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="@tools:sample/lorem" />
W tabeli poniżej opisano typy danych zastępczych, które możesz wstawiać do układów:
Tabela 2. Dane zastępcze dla układów
| Wartość atrybutu | Opis danych zastępczych |
|---|---|
@tools:sample/full_names |
Imiona i nazwiska generowane losowo z kombinacji @tools:sample/first_names i @tools:sample/last_names |
@tools:sample/first_names |
popularne imiona, |
@tools:sample/last_names |
Popularne nazwiska |
@tools:sample/cities |
Nazwy miast z całego świata |
@tools:sample/us_zipcodes |
Losowo wygenerowane kody pocztowe w USA |
@tools:sample/us_phones |
Losowo wygenerowane numery telefonów w tym formacie:
(800) 555-xxxx |
@tools:sample/lorem |
Tekst zastępczy w języku łacińskim |
@tools:sample/date/day_of_week |
Losowe daty i godziny w określonym formacie. |
@tools:sample/date/ddmmyy | |
@tools:sample/date/mmddyy | |
@tools:sample/date/hhmm | |
@tools:sample/date/hhmmss | |
@tools:sample/avatars |
Obiekty rysowalne wektorowo, których możesz używać jako awatarów profilu |
@tools:sample/backgrounds/scenic |
obrazy, których możesz używać jako tła; |