web-dev-qa-db-ja.com

Androidのレイアウトファイルの "tools:context"とは何ですか?

ADTの最近の新しいバージョンから始めて、私はレイアウトXMLファイルのこの新しい属性に気付きました。

<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:tools="http://schemas.Android.com/tools"
    Android:orientation="vertical"
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent"
    tools:context=".MainActivity" />

"tools:context"は何のために使われていますか?

そこに書かれているアクティビティへの正確なパスさえどうやって知るのでしょうか。マニフェスト内のアプリのパッケージを見ていますか?

コンテキストを拡張するクラスに限定されていますか、それともアクティビティだけに限定されていますか?リストビューアイテムなどに使えますか?

883

これは、UIプレビューエディタがレイアウトプレビューをレンダリングするために使用するアクティビティです。文書化されている ここ

この属性は、このレイアウトがデフォルトで関連付けられているアクティビティを宣言します。これにより、レイアウトテーマをプレビューに含める内容やクイックフィックスから作成したときにonClickハンドラを挿入する場所など、アクティビティに関する知識が必要なエディタまたはレイアウトプレビューの機能が有効になります

404
Nikolay Elenkov

その属性は基本的にレイアウトの上の "Associated Activity"選択の永続性です。実行時には、レイアウトは常にアクティビティに関連付けられています。それは、もちろん、1つ以上、少なくとも1つに関連付けることができます。ツールでは、特定の機能を実行するために、このマッピング(実行時に反対方向に行われます。アクティビティはsetContentView(layout)を呼び出してレイアウトを表示できます)について知る必要があります。

現時点では、レイアウトの表示に適切なテーマを選択すること(マニフェストファイルでは activity に使用するテーマを登録することができます。レイアウトについては、レイアウトに表示する適切なテーマを選択できます。将来的には、これを使用して、(アクティビティに関連付けられている)アクションバーのレンダリング、onClickハンドラを追加する場所などの追加機能を推進します。

これがツールである理由は次のとおりです。名前空間属性は、これがツールで使用するための設計時マッピングにすぎないためです。レイアウト自体は、複数のアクティビティやフラグメントなどで使用できます。たとえば、正しいテーマを表示できるように、デザインタイムバインディングを選択する方法を提供します。リストビューやフラグメントバインディングなどを変更できるのと同じように、いつでも変更できます。

(これは this についての詳細を含む完全なチェンジセットです)

そして、上記の リンク Nikolayは、新しい設定チューザの外観と動作を示しています

もう1つ: "tools"名前空間は特別です。 Androidのパッケージ化ツールはそれを無視することを認識しているため、これらの属性はどれもAPKにパッケージ化されません。レイアウト内の追加のメタデータに使用しています。たとえば、毛羽立ちの警告を抑制する属性が格納されている場所でもあります - ツールとしては無視します。

368
Tor Norbye

によると Android Toolsプロジェクトサイト

tools:context

この属性は通常、レイアウトXMLファイルのルート要素に設定され、レイアウトがどのアクティビティに関連付けられているかを記録します(明らかにレイアウトは複数のレイアウトで使用できるため)テーマはマニフェストで定義されており、レイアウトではなくアクティビティに関連付けられているため、これはたとえばレイアウトエディタでデフォルトテーマを推測するために使用されます。マニフェストと同じドットプレフィックスを使用して、完全なアプリケーションパッケージ名をプレフィックスとして使用せずにアクティビティクラスを指定することができます。

<Android.support.v7.widget.GridLayout
    xmlns:Android="http://schemas.Android.com/apk/res/Android"    
    xmlns:tools="http://schemas.Android.com/tools"
    tools:context=".MainActivity">  

使用者:Studio&Eclipse、Lintのレイアウトエディタ

88
anothercoder

1.説明

tools: context = "activity name"それはapkにパッケージ化されません。現在のレイアウトファイルセットの対応するレンダリングコンテキストでのみADTレイアウトエディター、コンテキストのレンダリングで現在のレイアウトを表示します。 manifestファイルがテーマを設定すると、ADT Layout Editorは、MainActivityを設定するとテーマが設定されるというTheme.Meansに従って現在のレイアウトをレンダリングします。 The Light(もう一方)を選択すると、ビジュアルレイアウトマネージャーに、テーマとなるもののバックグラウンドコントロールが表示されます。光は次のように見えます。見えるものを表示するだけで、結果が得られます。

一部の人々は一部を理解すると見ていますが、一部の人々はまた知らないのを見ます。説明の言葉をいくつか追加します。

2.サンプル

単純なtools:textを例に取ります。たとえば、tools:contextをさらに理解するのに便利なもう少し画像を使用します

<TextView
    Android:id="@+id/text1"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:text="sample name1" />

<TextView
    Android:id="@+id/text2"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    tools:text="sample name2" />

enter image description here

TextView1はAndroid: textを採用し、TextView2でtools:textを使用します。レイアウトエディターの右側にsample name1sample name2の2つのフォントが表示されます。コンパイルするコードを実行し、生成されたapk、端末はsample name1のみを表示し、sample name2を表示しません。実行してみて、どのような効果があるかを確認してください。

3.具体的な説明

1. tools: context = "activity name"それはapkにパッケージ化されません(理解:これと同等のものはコメントされ、コンパイルされた効果はありません。)

2.現在のレイアウトファイルセットレンダリングコンテキストに対応するADT Layout Editor(シミュレーターの右側にある上記のアイコン)のみ、コンテキストのレンダリングにおける現在のXMLのレイアウトはアクティビティ名に対応し、マニフェストファイルのアクティビティがテーマを設定している場合、ADTレイアウトエディターは、MainActivityを設定している場合はテーマを設定するというTheme.Meansに従って現在のレイアウトをレンダリングします。ライトは(その他)でもあります。(理解:tools: context = "activity name"を追加しました。XMLレイアウトは指定されたアクティビティをレンダリングし、マニフェストファイルでテーマを確立します。右上のシミュレーターテーマスタイルもテーマに対応する変更に従います。 )

4.まとめ

要約すると、これらのプロパティは、主に適切なツール、シミュレータのデバッグ時間の表示ステータス、およびコンパイルが機能しないことを目的としており、

10
KeLiuyue

“ tools:context”は、開発フレームワークにおけるXMLでのレイアウト作成を容易にすることができる設計属性の1つです。この属性は、レイアウトを実装するためにどのアクティビティクラスが選択されるかを開発フレームワークに示すために使用されます。 「tools:context」を使用して、Android Studioはプレビューに必要なテーマを自動的に選択します。

Androidアプリ開発のためのその他の属性や便利なツールについてもっと知りたい場合は、このレビューをご覧ください: http://cases.azoft.com/4-must-know-tools-for-効果的なAndroid開発/

7
Mihir Patel

これは最善の解決策です: https://developer.Android.com/studio/write/tool-attributes

これは、私たちがxmlの中でアクティビティーコンテキストを設定できるデザイン属性です。

tools:context=".activity.ActivityName"

アダプタ:

tools:context="com.PackegaName.AdapterName"

enter image description here

マークされたアイコンをクリックするとJavaクラスに移動でき、ツールには次のような機能があります。

tools:text=""
tools:visibility:""
tools:listItems=""//for recycler view 

etx

1
Ashik Azeez

このtools:context=".MainActivity" thislineはxmlファイルで使用され、これはどのJavaソースファイルがこのxmlファイルへのアクセスに使用されるかを示します。これは、特定のJavaファイルに対してこのxmlプレビューを表示することを意味します。

0