🦔

【Android】ツール属性について

2021/08/09に公開

ツール属性

  • tools 名前空間(xmlns:tools="http://schemas.android.com/tools")でサポートされている様々な XML 属性
  • 設計時の機能コンパイル時の動作 を指定することが出来る
  • 有効にした XML 属性はビルド時に削除されるので、APK のサイズとアプリを実行した時の動作に影響しない

使い方

ルートタグにxmlns:tools="http://schemas.android.com/tools"を追加する。

属性の種類

エラー処理属性

lint の警告メッセージを抑制する属性。

tools:ignore

  • 属性を使用するツール : lint
  • 対象の要素または下位の要素に対して、lint で無視するものを指定する
<string name="show_all_apps" tools:ignore="MissingTranslation">All</string>

tools:targetApi

  • 属性を使用するツール : lint
  • Java の@TargetApi[1]と同じように動作する
  • 指定した API バージョンでのみ要素を使うことを lint に伝える
  • minSdkVersionのAPIレベルでその要素が使えない場合でも、lint は警告を出さなくなる
<!-- GridLayoutはAPIレベル14以降で使用可能。14未満で使用しない時は、targetApiに14を指定する -->
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:targetApi="14" >

tools:locale

  • 属性を使用するツール : lint、Android Studio
  • <resources>要素内のデフォルトの言語を指定できる(指定しなかった場合は英語)
<!-- strings.xmlに指定した場合、使用する言語が英語ではなくスペイン語だと示すことが出来る -->
<resources xmlns:tools="http://schemas.android.com/tools"
    tools:locale="es">

設計時の View 属性

tools:context

  • 属性を使用するツール : lint、Android Studio Layout Editor
  • レイアウトが関連付けられる Activity を指定する
  • クイックフィックスから、onClick ハンドラを Activity に作成する等できる

onClickハンドラをMainActivityに作成する

screenshot_onclick_handler

screenshot_main_activity

tools:itemCount

  • プレビューに表示する RecyclerView のアイテム数を指定する
<androidx.recyclerview.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:itemCount="2" />

RecyclerViewのプレビュー

screenshot_recyclerview_preview

@tools:sample/*

  • 属性を使用するツール : Android Studio Layout Editor
  • プレースホルダのデータや画像を挿入することができる
<!-- @tools:sample/first_names と @tools:sample/last_namesからランダムに作成されたフルネーム -->
<TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:text="@tools:sample/full_names" />

screenshot_full_name

<!-- 世界中の都市の名前 -->
<TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:text="@tools:sample/cities" />

screenshot_cities

<!-- 指定された形式でランダムに生成された日付または時刻 -->
<TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:text="@tools:sample/date/hhmmss" />

screenshot_date_or_time

<!-- プロフィールアイコンとして使用出来る画像 -->
<ImageView
        android:layout_width="200dp"
        android:layout_height="200dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        tools:src="@tools:sample/avatars" />

screenshot_avater

<!-- 背景として使用出来る画像 -->
<ImageView
        android:layout_width="200dp"
        android:layout_height="200dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        tools:src="@tools:sample/backgrounds/scenic" />

screenshot_background

脚注
  1. SDKバージョンの警告を無視するアノテーション ↩︎

Discussion