Android:ツールの名前空間の使用に関するヒント



Android Tools Namespace Usage Tips



[https://www.jianshu.com/p/2912bcba4465から転送]

まず、ツールの名前空間は何ですか?それはどこにある?

Android Studioでは、xmlレイアウトファイルを作成した後、通常、自動生成されたコードにツールの名前空間があります。xmlns:tools='http://schemas.android.com/tools' 。私は以前に何を使用したかわからず、使用したことがなく、手動で削除するか、コードをフォーマットするときに自動的に削除します。今日のドキュメントを調べて初めて、このようなものに大きな目的があることがわかりました。

次に、ツールの名前空間の機能は何ですか?

公式ドキュメントによると、その属性の機能カテゴリに応じて、おおよそ3つの主要な機能があります。



  • xmlでのエラー処理
  • Xmlプレビュー
  • リソースの圧縮

人気のポイントは次のとおりです。

  • 黄色い線のヒントを減らすか回避し、コードをより更新し、コンパイルのエラーを減らします
  • プレビューインターフェイスをより柔軟にし、プレビュービューを好きなようにカスタマイズします
  • リソースファイルを圧縮してAPKのボリュームを減らします。

第三に、ツールの名前空間属性関数の詳細

コンテンツのこの部分は、公式文書の要約に基づいています。個人レベルが限られているため、理解に偏りがある可能性があります。訂正を歓迎します。



(a)、xmlのエラー処理プロパティ

1、tools:ignore

説明
適用範囲 xml内の任意の要素
アクションオブジェクト 糸くずLint is a code scanning tool provided by AndroidStudio
特定の役割 コードをチェックしている間、Lintツールに指定されたエラーを無視させます。
値の説明 異なるエラーは、無視の値である異なるIDに対応します。例:MissingTranslation。 Ignoreの後には、複数のIDをコンマで区切って、複数のIDを続けることができます。

例1:
Lintチェックのデフォルト言語は英語です。 xmlに中国語がある場合、MissingTranslationエラーが報告されます。 tools:ignoreを追加した後、それを回避できます。

<string name='show_all_apps' tools:ignore='MissingTranslation'>Allstring> Copy code

例2:

image.png

2、tools:targetApi

説明
適用範囲 xmlの任意の要素
アクションオブジェクト 糸くず
特定の役割 Javaコードの@TargetApiアノテーションと同じで、コントロールが指定されたAPI以降でのみ有効であることを示します。このように、Lint検出を使用する場合、minSdkVersionはコントロールが表示されるバージョンよりも低いため、エラーは報告されません。
値の説明 APIバージョン番号に対応するint値

例:



<GridLayout xmlns:android='http://schemas.android.com/apk/res/android' xmlns:tools='http://schemas.android.com/tools' tools:targetApi='14' > Copy code

3、ツール:ロケール

説明
適用範囲
アクションオブジェクト Lint、AndroidStudioエディター
特定の役割 リソース内の要素の言語タイプを示し、スペルチェックやLintチェックによるエラーを回避します。両方のデフォルトの言語タイプは英語ですes
値の説明

例:
現在values/strings.xml指定された要素の言語バージョンです。

<resources xmlns:tools='http://schemas.android.com/tools' tools:locale='es'> Copy code

(B)、xmlビュープレビュー関連のプロパティ

次のプロパティはxmlで定義されており、プレビュー中にのみ表示され、正式な展開後には表示されません。Similar to the default property when a string resource is referenced in DataBindg.

1、ツール付き:androidの代わりにxxxx:xxxx

説明
適用範囲 見る
アクションオブジェクト AndroidStudioレイアウトエディター
特定の役割 ビューの属性値のandroidプレフィックスをツールに置き換えた後、プレビュー効果を実現できます。 ツールの名前空間のプロパティ値は、プレビュー時にのみ有効です。また、プレビューでは、tools:xxxとandroid:xxxが同時に存在する場合、tools:xxxのプレビュー効果が先に表示されますので、サンプルコード2を参照してください。
値の説明 ビューの値は、ビューの値に基づいています。

サンプルコード1:
プレビュー時に指定したテキストを表示します

<TextView android:layout_width='wrap_content' android:layout_height='wrap_content' tools:text='Welcome to CnPeng Public Number' /> Copy code

サンプルコード2:
tools:textとandroid:textが同時に存在し、プレビュー時にtools:textが最初に表示されます。

<TextView android:layout_width='wrap_content' android:layout_height='wrap_content' tools:text='These are shown at preview time and will take precedence over android:text in previews' android:text='These will show up after deployment' /> Copy code

2、tools:context

説明
適用範囲 xmlのルートレイアウト
アクションオブジェクト Lint、AndroidStudioレイアウトエディター
特定の役割 レイアウトファイルのデフォルトの関連アクティビティを宣言します 。宣言後、アクティビティに関連するいくつかのプロパティがレイアウトエディタまたはプレビューインターフェイスで開かれます。たとえば、onClickを作成する場合は、メソッド名を直接入力し、オートコンプリートコードのショートカットキーをクリックして、対応するアクティビティを作成するように求めます。メソッド。This enables features in the editor or layout preview that require knowledge of the activity, such as what the layout theme should be in the preview and where to insert onClick handlers when you make those from a quickfix .
値の説明 関連する活動。パスを取得する必要があります。マニフェストファイルにアクティビティを登録するときは、パスと一致していることをお勧めします。

サンプルコード:
最初に関連するアクティビティを宣言してから、onclickメソッド名を直接記述し、オートコンプリートコードのショートカットを押すと、対応するアクティビティにメソッドを作成するように求められます。

3、tools:itemCount

説明
適用範囲
アクションオブジェクト AndroidStudioレイアウトエディター
特定の役割 ノードでこのプロパティを設定した後、プレビューインターフェイスでいくつかのアイテムを描画/表示するように指定します。
値の説明 Int型の値

サンプルコード:
プレビューインターフェースには4つのアイテムが表示されます

4、tools:layout

説明
適用範囲
アクションオブジェクト AndroidStudioレイアウトエディター
特定の役割 プレビュー時にフラグメントに入力されるレイアウトファイルを宣言します
値の説明 レイアウトIDの参照値

サンプルコード:
プレビュー中にtestlayoutのレイアウトをフラグメントに塗りつぶします。The layout of testlayout contains a RecyclerView, and the number of items displayed by preview with itemCount is 4 (refer to tools:itemCount)

5、tools:listitem、tools:listheader、tools:listfooter

説明
適用範囲 およびそのサブクラス、
アクションオブジェクト AndroidStudioレイアウトエディター
特定の役割 プレビューインターフェイスのAdapterViewによって表示されるエントリ、ヘッダーレイアウト、およびフットステップを示します。
値の説明 レイアウトファイルリファレンス

サンプルコード:
ここでは少し厄介です。プレビュー時にリストフッターが表示されません。自分にとって間違っているかどうかはわかりません。

item_spinner.xml

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:layout_width='match_parent' android:layout_height='match_parent' android:gravity='center_vertical' android:orientation='horizontal'> <ImageView android:layout_width='@dimen/dp50' android:layout_height='@dimen/dp50' android:src='@drawable/logo' tools:ignore='ContentDescription'/> <TextView android:id='@+id/tv_item_suspendRv' android:layout_width='wrap_content' android:layout_height='wrap_content' android:layout_marginRight='@dimen/dp10' android:gravity='center_vertical' android:text='abc' tools:ignore='HardcodedText,RtlHardcoded'/> <TextView android:layout_width='wrap_content' android:layout_height='wrap_content' tools:text='This is the preview text set'/> LinearLayout> Copy code

注意
アイテムレイアウトにTextViewとそのサブクラスコントロールがある場合

  • tools:textが設定されている場合、プレビュー時に値が最初に表示されます
  • tools:textが設定されていないが、android:textが設定されている場合、プレビュー中にandroid:textのプロパティ値が表示されます。
  • 設定されていない場合は、デフォルトでitem1とitem2を使用してプレビューテキストとしてTextViewに入力されます。

6、tools:showIn

説明
適用範囲 すべてののルートノード(つまり、レイアウトファイルのルートノード)
アクションオブジェクト AndroidStudioレイアウトエディター
特定の役割 レイアウトファイルが参照されるレイアウトを宣言します。ステートメントの後、対応するファイルで使用することを忘れないでください。
値の説明 レイアウトファイルへの参照。

サンプルコード:

Testlayout2.xmlは、testlayoutによって参照されます。

testlayout2.xml

xml version='1.0' encoding='utf-8'?> <TextView android:id='@+id/testFragment' xmlns:android='http://schemas.android.com/apk/res/android' xmlns:tools='http://schemas.android.com/tools' android:layout_width='match_parent' android:layout_height='wrap_content' tools:showIn='@layout/testlayout' tools:text='Preview text'> TextView> Copy code

testlayout.xml

xml version='1.0' encoding='utf-8'?> <LinearLayout xmlns:android='http://schemas.android.com/apk/res/android' android:layout_width='match_parent' android:layout_height='match_parent'> <include layout='@layout/testlayout2'/> LinearLayout> Copy code

このように、レイアウトファイルが使用されている場所を確認するときに便利です。だが:

レイアウトファイルが複数のインクルードによって参照されている場合、tools:showInはどのように作成する必要がありますか?どの友達が知っているか教えてください。

7、ツール:メニュー

説明
適用範囲 レイアウトファイルのルートノード(Any root
アクションオブジェクト AndroidStudioレイアウトエディター
特定の役割 AppBarがプレビューインターフェイスに表示するメニューを宣言します
値の説明 メニューファイルのID。複数のIDの間にコンマで区切られます。接頭辞や接尾辞は必要ありません。The value can be one or more menu IDs, separated by commas (without @menu/ or any such ID prefix and without the .xml extension)

注:公式ドキュメントで説明されているように、複数のメニューIDを渡すことができます。ただし、実際のテストでは、倍数を渡すときに右上隅に異なる表示がないことがわかりました。

8、tools:minValue / tools:maxValue

説明
適用範囲
アクションオブジェクト AndroidStudioレイアウトエディター
特定の役割 ために NumberPicker プレビュー用の最小値と最大値を設定します
値の説明 整数値

説明の例:

この追加後、特殊効果は見られませんでした。

9、ツール:openDrawer

説明
適用範囲
アクションオブジェクト AndroidStudioレイアウトエディター
特定の役割 プレビューインターフェイスでは DrawerLayout オンにする。
値の説明 終了、左、右、開始。具体的な手順については、以下の表を参照してください
絶え間ない 説明
終わり 800005 サイズを変更せずに、オブジェクトをコンテナの最後にプッシュします。
3 サイズを変更せずに、オブジェクトをコンテナの左側にプッシュします。
正しい 5 サイズを変更せずに、オブジェクトをコンテナの右側にプッシュします。
開始 800003 サイズを変更せずに、オブジェクトをコンテナの先頭にプッシュします。

注意:
1.どの部分がlayout_gravityによってサイドプルウィンドウとして使用されるかを宣言する必要があり、その値もend、start、left、およびrightです。
2. tools:openDrawerの値は、サイドプルウィンドウのlayout_gravityの値と同じである必要があります。

コード例:

xml version='1.0' encoding='utf-8'?> <android.support.v4.widget.DrawerLayout android:id='@+id/numberPicker' xmlns:android='http://schemas.android.com/apk/res/android' xmlns:tools='http://schemas.android.com/tools' android:layout_width='match_parent' android:layout_height='match_parent' tools:openDrawer='right'> <RelativeLayout android:layout_width='match_parent' android:layout_height='match_parent'> <TextView android:layout_width='wrap_content' android:layout_height='wrap_content' android:layout_centerInParent='true' tools:text='This is the main content'/> RelativeLayout> <RelativeLayout android:layout_width='100dp' android:layout_height='match_parent' android:layout_gravity='right' android:background='#f2e67b'> <TextView android:layout_width='wrap_content' android:layout_height='wrap_content' android:layout_centerInParent='true' android:ems='1' tools:text='This is something to pull sideways'/> RelativeLayout> android.support.v4.widget.DrawerLayout> Copy code

10、「@ tools:sample / *」リソース

説明
適用範囲 テキストまたは画像の表示をサポートするすべてのビューコントロール(Any view that supports UI text or images
アクションオブジェクト AndroidStudioレイアウトエディター
特定の役割 ビューのプレースホルダーテキストまたは画像を設定します。This is actually a bunch of string and image resources preset by the system. When you want to set the preview text or preview the image, if you don't want to define it yourself, you can directly refer to the string and image preset by these systems.
値の説明 参照フォーム
属性値 説明
@tools:sample/full_names @tools:sample/first_namesの組み合わせからランダムに生成されるフルネームおよび@tools:sample/last_names
@tools:sample/first_names 一般的な名。
@tools:sample/last_names 一般的な姓。
@tools:sample/cities 世界中の都市の名前。
@tools:sample/us_zipcodes ランダムに生成された米国の郵便番号。
@tools:sample/us_phones 次の形式でランダムに生成された電話番号:(800) 555-xxxx
@tools:sample/lorem ラテン語から派生したプレースホルダーテキスト。
@tools:sample/date/day_of_week 指定された形式のランダム化された日付と時刻。
@tools:sample/date/ddmmyy
@tools:sample/date/mmddyy
@tools:sample/date/hhmm
@tools:sample/date/hhmmss
@tools:sample/avatars プロファイルアバターとして使用できるベクタードローアブル。
@tools:sample/backgrounds/scenic 背景として使用できる画像。

サンプルコード:

以下のプレビューでは、アイコンとテキストはすべて、直接参照されるシステムプリセットです。

(3)リソース縮小属性(リソース縮小属性)

次の属性を使用すると、リソースを圧縮するときに予約または破棄できるリソースを決定したり、厳密モードのリソース参照チェックをオンにしたりできます。The following attributes allow you to enable strict reference checks and declare whether to keep or discard certain resources when using resource shrinking

リソース圧縮をオンにすると、モジュールのbuild.gradleファイルが次のように変更されます。

android { buildTypes { release { shrinkResources true //Open resource compression. minifyEnabled must also be true, otherwise the compilation will not pass minifyEnabled true / / Open code confusion / compression proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } Copy code

1、tools:shrinkMode

説明
適用範囲
アクションオブジェクト リソース圧縮用のビルドツールを開きますBuild tools with resource shrinking
特定の役割 ビルドツールがリソースを圧縮するときに使用するモードを示します:セーフモード、ストリクトモード
値の説明 安全、厳格
モード 説明
安全 予約済みは参照用に表示されるか、合格する可能性があります Resources.getIdentifier() 動的に参照されるリソース
厳格 リソースまたはコードで参照されているリソースを保持する

デフォルトはセーフモードです(つまり、shrinkMode='safe'厳密モードを使用する場合は、ノードに宣言を表示する必要があります。shrinkMode='strict'、詳細は次のとおりです。

xml version='1.0' encoding='utf-8'?> <resources xmlns:tools='http://schemas.android.com/tools' tools:shrinkMode='strict' /> Copy code

ストリクトモードをオンにすると、次のように使用できます。 tools:keep 削除したくない、または使用したくないリソースを保持する tools:discard リソースを直接削除する

2、ツール:維持

説明
適用範囲
アクションオブジェクト リソース圧縮用のビルドツールを開きます
特定の役割 リソース圧縮を使用して未使用のリソースを削除する場合、このプロパティを使用すると、予約できるリソース(Resources.getIdentifier()によって間接的に参照される一部のリソースなど)を指定できます。
値の説明 リソースファイルリファレンス

これを使用する場合は、resourcesディレクトリの下にxmlファイルを作成し、次のような名前を指定します:res/raw/keep.xml。 CreateNodeおよびfor tools:keep Assignment。その値は、予約されるリソースを表します。 複数のリソース間にコンマ間隔を使用するか、ワイルドカードとして*を使用します 、例は次のとおりです。

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' /> Copy code

3、ツール:破棄

説明
適用範囲
アクションオブジェクト リソース圧縮用のビルドツールを開きます
特定の役割
値の説明

リソース圧縮ツールを使用して不要なリソースを削除する場合は、このプロパティを使用して、手動で削除する必要のあるリソースを示します(たとえば、参照されているが無効なリソース、またはGradleプラグインが参照されるリソースの一部を誤って引用している)。

これを使用する場合は、resourcesディレクトリの下にxmlファイルを作成し、次のような名前を指定します:res/raw/keep.xml。 CreateNodeおよびfor tools:keep Assignment。その値は、予約されるリソースを表します。 複数のリソース間にコンマ間隔を使用するか、ワイルドカードとして*を使用します 、例は次のとおりです。

xml version='1.0' encoding='utf-8'?> <resources xmlns:tools='http://schemas.android.com/tools' tools:discard='@layout/unused_1' /> Copy code

第四に、参考資料:

ツール名前空間の公式ドキュメント:
developer.android.google.cn/studio/writ…

名前空間の概要:
blog.csdn.net/p106786860/…

注意:
developer.android.google.cn/studio/writ…

リントリファレンス:
developer.android.google.cn/studio/writ…

リソースの圧縮shrink-resources
developer.android.com/studio/buil…

この記事は終わりました、見てくれてありがとう!
不備がある場合は訂正してください!



転載:https://juejin.im/post/5c87093cf265da2dc675f417