Odniesienie do atrybutów narzędzi (widoki)

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.

Atrybut tools:text ustawia Google Voice jako wartość podglądu układu.
Rysunek 1. Atrybut 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 Ikona 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.

Szybka poprawka
    atrybutu onClick działa tylko wtedy, gdy ustawisz tools:context
Rysunek 2. Szybka poprawka atrybutu 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łaWartośćOpis
end800005Przesuń obiekt na koniec kontenera, nie zmieniając jego rozmiaru.
left3Przesuń obiekt na lewo od kontenera, nie zmieniając jego rozmiaru.
right5Przesuń obiekt na prawą stronę kontenera, nie zmieniając jego rozmiaru.
start800003Przesuń 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ść atrybutuOpis danych zastępczych
@tools:sample/full_names Pełne imiona i nazwiska wygenerowane losowo z połączenia @tools:sample/first_names@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;