Odniesienie do atrybutów narzędzi (widoki)

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.

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

Szybka poprawka atrybutu onClick działa tylko wtedy, gdy ustawisz tools:context
Rysunek 2. Szybka poprawka atrybutu 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łaWartośćOpis
end800005Przesuń obiekt na koniec kontenera, nie zmieniając jego rozmiaru.
left3Przesuń obiekt do lewej krawędzi kontenera, nie zmieniając jego rozmiaru.
right5Przesuń obiekt na prawo od kontenera, nie zmieniając jego rozmiaru.
start800003Przesuń 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ść atrybutuOpis 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;