Pojęcia i implementacja w Jetpack Compose
Android Studio obsługuje różne atrybuty XML w przestrzeni nazw tools, które umożliwiają korzystanie z funkcji w czasie projektowania, np. określanie układu, który ma być wyświetlany we fragmencie, lub zachowań w czasie kompilacji, np. określanie trybu zmniejszania, który ma być stosowany do zasobów XML. Podczas kompilowania aplikacji narzędzia do kompilacji usuwają te atrybuty, więc nie mają one wpływu na rozmiar pliku APK ani działanie w czasie wykonywania.
Aby używać tych atrybutów, dodaj przestrzeń nazw tools do elementu głównego każdego pliku XML, w którym chcesz ich używać, jak pokazano tutaj:
<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 wyciszać komunikaty ostrzegawcze narzędzia lint:
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.
Informuje to narzędzia, że ten element i wszystkie jego 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 w przypadku interfejsu API na poziomie 14 i wyższym, ale wiesz, że ten układ nie jest używany w Twoim kodzie w przypadku żadnych starszych 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 GridLayout z biblioteki pomocy).
Atrybuty widoku w czasie projektowania
Te atrybuty określają cechy układu, które są widoczne tylko w podglądzie układu w Android Studio.
tools: zamiast android:
Przeznaczone dla: <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 Android.
Jest to przydatne, gdy wartość atrybutu nie jest wypełniana do czasu wykonania i chcesz zobaczyć efekt w podglądzie układu.
Jeśli np. 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 wartość „Google Voice” dla 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 FrameLayout z 2 elementami podrzędnymi, ale w podglądzie układu chcesz widzieć tylko jeden z nich, możesz ustawić, aby jeden z nich był w podglądzie układu niewidoczny, jak pokazano tutaj:
<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 w widoku projektu używasz narzędzia Layout Editor, okno Właściwości umożliwia edytowanie niektórych atrybutów 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 katalog główny <View>
Używane przez: Lint, Edytor układu w Android Studio
Ten atrybut deklaruje, z jaką aktywnością domyślnie powiązany jest ten układ. Umożliwia to korzystanie w edytorze lub podglądzie układu z funkcji, które wymagają znajomości aktywności, np. motywu układu w podglądzie i miejsca wstawienia procedur obsługi onClick wygenerowanych na podstawie szybkiej poprawki, jak pokazano na rysunku 2.
onClick
działa tylko wtedy, gdy ustawisz tools:context.Nazwę klasy aktywności możesz podać, używając tego samego prefiksu w postaci kropki co w pliku manifestu (z wyłączeniem pełnej nazwy pakietu).
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
Przeznaczone dla: <RecyclerView>
Używane przez: edytor układu w Android Studio
W przypadku danego RecyclerView ten atrybut określa liczbę elementów, które Edytor układu powinien renderować w oknie Podgląd.
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
Przeznaczone dla: <fragment>
Używane przez: narzędzie Layout Editor w Android Studio
Ten atrybut określa, w którym układzie ma być wyświetlany podgląd układu w fragmencie, ponieważ podgląd układu nie może wykonać kodu aktywności, który zwykle stosuje układ.
Przykład:
<fragment android:name="com.example.main.ItemListFragment"
tools:layout="@layout/list_content" />
tools:listitem, tools:listheader, tools:listfooter
Przeznaczenie: <AdapterView> (i klasy podrzędne, np. <ListView>)
Używane przez: narzędzie Layout Editor w Android Studio
Te atrybuty określają, który układ ma być wyświetlany w podglądzie układu dla elementów, nagłówka i stopki listy. Pola danych w układzie są wypełniane treścią numeryczną, np. „Produkt 1”, dzięki czemu elementy listy nie są powtarzalne.
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: narzędzie Layout Editor w Android Studio
Ten atrybut umożliwia wskazanie układu, który używa tego układu za pomocą elementu <include>, dzięki czemu możesz wyświetlić podgląd tego pliku i go edytować w formie, w jakiej jest on osadzony w układzie nadrzędnym.
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" />
Podgląd układu pokazuje teraz ten układ TextView w układzie activity_main.
tools:menu
Przeznaczone dla: dowolny katalog główny <View>
Używane przez: narzędzie Layout Editor w Android Studio
Ten atrybut określa, które menu jest wyświetlane na podglądzie układu na pasku aplikacji. Wartość to co najmniej 1 identyfikator menu oddzielony przecinkami, bez @menu/ ani prefiksu identyfikatora i bez rozszerzenia .xml.
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
Przeznaczone dla: <NumberPicker>
Używane przez: narzędzie Layout Editor w Android Studio
Te atrybuty określają wartości minimalne i maksymalne widoku NumberPicker.
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
Przeznaczone dla: <DrawerLayout>
Używane przez: narzędzie Layout Editor w Android Studio
Ten atrybut umożliwia otwarcie DrawerLayout w podglądzie.
Możesz też zmodyfikować sposób renderowania układu przez Edytor układu, przekazując jedną z tych wartości:
Tabela 1. Wartości modyfikujące sposób, w jaki [narzędzie] Layout Editor renderuje DrawerLayout
| Stała | Wartość | Opis |
|---|---|---|
end | 800005 | Przesuń obiekt na koniec kontenera, nie zmieniając jego rozmiaru. |
left | 3 | Przesuń obiekt na lewo od kontenera, nie zmieniając jego rozmiaru. |
right | 5 | Przesuń obiekt na prawą stronę kontenera, nie zmieniając jego rozmiaru. |
start | 800003 | Przesuń obiekt na początek kontenera, nie zmieniając jego rozmiaru. |
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. Aby na przykład sprawdzić, jak układ zachowuje się w przypadku tekstu, 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 znajdziesz opis typów danych zastępczych, które możesz wstawić do układów:
Tabela 2. Dane zastępcze w przypadku układów
| Wartość atrybutu | Opis danych zastępczych |
|---|---|
@tools:sample/full_names |
Pełne imiona i nazwiska wygenerowane losowo z połączenia @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 Stanach Zjednoczonych |
@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 wektorowe, których możesz używać jako awatarów profilu |
@tools:sample/backgrounds/scenic |
obrazy, które możesz wykorzystać jako tła; |