Android Studio obsługuje różne atrybuty XML w przestrzeni nazw tools
które umożliwiają funkcje w czasie projektowania, np. wybór układu do wyświetlenia we fragmencie,
zachowania podczas kompilowania, np. wybrać tryb zmniejszania, który ma zostać zastosowany do pliku XML.
i zasobami Google Cloud. Podczas tworzenia aplikacji narzędzia do kompilacji usuwają te atrybuty,
że nie ma to wpływu na rozmiar pliku APK ani na jego działanie w czasie działania.
Aby używać tych atrybutów, dodaj przestrzeń nazw tools
do głównego elementu każdego z nich
XML, w którym chcesz ich użyć, tak jak tutaj:
<RootTag xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" >
Atrybuty obsługi błędów
Te atrybuty pomagają pomijać komunikaty ostrzegawcze dotyczące lint:
tools:ignore
Przeznaczenie: dowolny element
Używane przez: Lint
Ten atrybut akceptuje rozdzieloną przecinkami listę identyfikatorów problemów lintowych, które chcesz narzędzia, które mają być ignorowane w tym elemencie lub jego elementach podrzędnych.
Możesz na przykład wskazać, aby narzędzia ignorowały błąd MissingTranslation
:
<string name="show_all_apps" tools:ignore="MissingTranslation">All</string>
tools:targetApi
Przeznaczenie: dowolny element
Używane przez: Lint
Ten atrybut działa tak samo jak
Adnotacja @TargetApi
w Javie
w kodzie. Umożliwia określenie poziomu interfejsu API (w postaci liczby całkowitej lub nazwy kodowej).
który obsługuje ten element.
Informuje to narzędzia, że Twoim zdaniem ten element oraz wszystkie jego elementy podrzędne są
używane tylko na określonym poziomie interfejsu API lub wyższym. Spowoduje to przerwanie lintowania przed ostrzeżeniem.
jeśli dany element lub jego atrybuty nie są dostępne na określonym przez Ciebie poziomie interfejsu API.
minSdkVersion
.
Możesz na przykład użyć tego atrybutu,
Opcja GridLayout
jest dostępna tylko na tych platformach:
Interfejs API na poziomie 14 lub wyższym, ale wiesz, że ten układ nie jest używany w Twoim kodzie
dla 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 interfejsu GridLayout
z biblioteki pomocy).
tools:locale
Przeznaczenie: <resources>
Używane przez: Lint, edytor Android Studio
Informuje on narzędzia, jaki jest domyślny język lub język zasobów w
danego elementu <resources>
, aby uniknąć ostrzeżeń modułu sprawdzania pisowni.
W przeciwnym razie narzędzie przyjmuje, że język jest angielski.
Wartość musi być prawidłowym językiem kwalifikator.
Możesz na przykład dodać tę informację do domyślnego pliku values/strings.xml
do
wskazują, że domyślnym językiem ciągów tekstowych jest
hiszpański zamiast angielski:
<resources xmlns:tools="http://schemas.android.com/tools"
tools:locale="es">
Atrybuty widoku czasu projektowania
Te atrybuty określają 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>
ze platformy Androida.
Jest to przydatne, gdy wartość atrybutu nie jest wypełniana do czasu działania i gdy
aby zobaczyć efekt w podglądzie układu.
Jeśli na przykład wartość atrybutu android:text
jest ustawiona w czasie działania lub chcesz
aby zobaczyć układ z wartością inną niż domyślny, możesz dodać
tools:text
, by określić tekst tylko na potrzeby podglądu układu.
Możesz dodać zarówno atrybut przestrzeni nazw android:
, który jest używany w
środowiska wykonawczego oraz pasujący atrybut tools:
, który zastępuje środowisko wykonawcze
tylko w podglądzie układu.
Możesz również użyć atrybutu tools:
, aby cofnąć ustawienie atrybutu dla:
tylko podgląd układu. Jeśli na przykład masz konto FrameLayout
z dwójką dzieci,
ale chcesz wyświetlić tylko jeden element podrzędny w podglądzie układu, możesz ustawić
aby były niewidoczne w podglądzie układu, jak widać 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" />
Jeśli korzystasz z Edytora układów w w widoku projektu, okno Właściwości umożliwia edycję czasu projektowania, atrybutów widoku danych. Każdy atrybut „design-time” jest oznaczony za pomocą atrybutu ikonę klucza obok nazwa atrybutu, aby odróżnić go od rzeczywistego atrybutu o tej samej nazwie.
tools:context
Przeznaczenie: dowolny poziom główny <View>
Używane przez: Lint, Android Studio Layout Edytujący
Ten atrybut określa aktywność, z którą jest powiązany ten układ
wartość domyślną. Włącza to funkcje w edytorze lub podglądzie układu, które wymagają
Wiedza o aktywności, np. o motywie układu
podglądu i miejsca wstawiania modułów obsługi onClick
wygenerowanych na podstawie
jak na ilustracji 2.
Możesz podać nazwę klasy aktywności, używając tego samego prefiksu kropki co w plik 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: Android Studio Layout Edytujący
Ten atrybut określa liczbę elementów w atrybucie
RecyclerView
Edytor układów powinien renderować się w
Okno 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 w Android Studio
Ten atrybut określa układ, w którym ma znaleźć się podgląd układu. ten fragment, bo podgląd układu nie może wykonać elementu kodu aktywności, który normalnie stosuje ten układ.
Na przykład:
<fragment android:name="com.example.main.ItemListFragment"
tools:layout="@layout/list_content" />
tools:listitem
, tools:listheader
, tools:listfooter
Przeznaczone dla: <AdapterView>
(i podklas, takich jak <ListView>
)
Używane przez: edytor układu w Android Studio
Te atrybuty określają, który układ będzie wyświetlany na podglądzie układu listy elementy, nagłówek i stopkę. Wszystkie pola danych w układzie są wypełnione wartościami wartości liczbowe, np. „Element 1”, aby elementy listy nie powtarzały 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 główny element <View>
w układzie, który jest wskazywany przez tag
<include>
Używane przez: edytor układu w Android Studio
Ten atrybut pozwala wskazać układ, który go używa, za pomocą
<include>
, dzięki czemu możesz
wyświetlić podgląd tego pliku i edytować go w takiej formie, w jakiej jest umieszczony 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 na podglądzie układu widać ten układ TextView
w takiej postaci, w jakiej jest widoczny w panelu
Układ activity_main
.
tools:menu
Przeznaczenie: dowolny poziom główny <View>
Używane przez: edytor układu w Android Studio
Ten atrybut określa menu, które będzie wyświetlane w podglądzie układu w
pasek aplikacji. Wartością jest co najmniej jeden identyfikator menu,
rozdzielone przecinkami, bez @menu/
ani takiego prefiksu identyfikatora i bez
rozszerzenie .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 w Android Studio
Te atrybuty ustawiają minimalne i maksymalne wartości dla
NumberPicker
widok.
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 w Android Studio
Ten atrybut umożliwia otwarcie
DrawerLayout
w podglądzie.
Możesz też zmodyfikować sposób renderowania układu przez przekazując jedną z tych wartości:
Stała | Wartość | Opis |
---|---|---|
end | 800005 | Wypchnij obiekt na koniec kontenera, nie zmieniając jego rozmiaru. |
left | 3 | Wypchnij obiekt na lewo od kontenera bez zmiany jego rozmiaru. |
right | 5 | Wypchnij obiekt na prawo od kontenera, nie zmieniając jego rozmiaru. |
start | 800003 | Wypchnij 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: każdy widok, który obsługuje tekst lub obrazy interfejsu
Używane przez: Android Studio Layout Edytujący
Ten atrybut umożliwia wstrzykiwanie do widoku danych zastępczych lub obrazów. Aby na przykład sprawdzić, jak układ zachowuje się po tekście Gdy masz gotowy tekst interfejsu aplikacji, możesz użyć następujące:
<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 opisujemy typy danych zastępczych, których możesz użyć wstrzyknięcie kodu do układów:
Wartość atrybutu | Opis danych zastępczych |
---|---|
@tools:sample/full_names |
Pełne imiona i nazwiska generowane losowo na podstawie kombinacji
@tools:sample/first_names i
@tools:sample/last_names |
@tools:sample/first_names |
Typowe imiona |
@tools:sample/last_names |
Typowe nazwiska |
@tools:sample/cities |
Nazwy miast na całym świecie |
@tools:sample/us_zipcodes |
Losowo generowane kody pocztowe w USA |
@tools:sample/us_phones |
Losowo generowane numery telefonów w tym formacie:
(800) 555-xxxx |
@tools:sample/lorem |
Tekst zastępczy w alfabecie ł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 |
Wektorowe obiekty rysunkowe, których można użyć jako awatarów profilu |
@tools:sample/backgrounds/scenic |
Obrazy, których możesz użyć jako tła |
Atrybuty zmniejszające zasoby
Te atrybuty pozwalają włączyć rygorystyczne sprawdzanie odwołań i zadeklarować czy warto zachować, czy odrzucić określone zasoby zmniejszanie zasobów.
Aby włączyć zmniejszanie zasobów, ustaw właściwość shrinkResources
na true
w pliku build.gradle
razem z dyrektywą minifyEnabled
, by zmniejszyć kod.
Na przykład:
Odlotowe
android { ... buildTypes { release { shrinkResources true minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } }
Kotlin
android { ... buildTypes { getByName("release") { isShrinkResources = true isMinifyEnabled = true proguardFiles( getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" ) } } }
tools:shrinkMode
Przeznaczenie: <resources>
Używane przez: narzędzia do tworzenia kampanii z ograniczaniem zasobów
Ten atrybut pozwala określić, czy narzędzia do kompilacji mają używać atrybutu :
- Tryb awaryjny: zachowaj wszystkie zasoby, które są cytowane i
do których może się odwoływać dynamicznie za pomocą wywołania funkcji
Resources.getIdentifier()
- Tryb ścisły: pozostawiasz tylko zasoby. są wyraźnie cytowane w kodzie lub innych zasobach.
Domyślnie używany jest tryb awaryjny (shrinkMode="safe"
). Aby zamiast tego użyć
w trybie ścisłym, dodaj shrinkMode="strict"
do tagu <resources>
w taki sposób:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
tools:shrinkMode="strict" />
Po włączeniu trybu ścisłego może być konieczne użycie funkcji tools:keep
aby zachować usunięte zasoby, których rzeczywiście potrzebujesz,
tools:discard
, aby usunąć jeszcze więcej zasobów.
Więcej informacji: Zmniejszanie zasobów.
tools:keep
Przeznaczenie: <resources>
Używane przez: narzędzia do tworzenia kampanii z ograniczaniem zasobów
Gdy używasz zmniejszania zasobów do usuwania nieużywanych zasobów,
pozwala określić zasoby do zachowania, zwykle dlatego, że są
w sposób pośredni, np. przez dynamiczne przekazywanie
wygenerowana nazwa zasobu do
Resources.getIdentifier()
Aby go użyć, utwórz plik XML w katalogu zasobów (na przykład
res/raw/keep.xml
) z tagiem <resources>
i określ każdy zasób do zachowania w atrybucie tools:keep
jako
rozdzielane przecinkami. Możesz jej użyć jako symbolu wieloznacznego.
Na przykład:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
tools:keep="@layout/used_1,@layout/used_2,@layout/*_3" />
Więcej informacji: Zmniejszanie zasobów.
tools:discard
Przeznaczenie: <resources>
Używane przez: narzędzia do tworzenia kampanii z ograniczaniem zasobów
Podczas zmniejszania zasobów w celu usunięcia nieużywanych zasobów ten atrybut pozwala określić zasoby, które chcesz ręcznie odrzucić, zwykle dlatego, że do zasobu się odwołuje, ale w sposób, który nie ma wpływu na aplikację lub bo wtyczka do Gradle błędnie wydedukowała, że zasób jest wymienionych.
Aby go użyć, utwórz plik XML w katalogu zasobów (na przykład
res/raw/keep.xml
) z tagiem <resources>
i określ każdy zasób do odrzucenia w atrybucie tools:discard
jako
rozdzielane przecinkami. Możesz jej użyć jako symbolu wieloznacznego.
Na przykład:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
tools:discard="@layout/unused_1" />
Więcej informacji: Zmniejszanie zasobów.