it-swarm.com.ru

Что такое "инструменты: контекст" в файлах макетов Android?

Начиная с недавней новой версии 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"?

Откуда он знает точный путь к деятельности, которая там написана? Это смотрит на пакет приложения, внутри манифеста?

Это ограничено классами, которые расширяют Контекст или только действия? Это можно использовать для элементов ListView и т.д.?

888
android developer

Это действие, которое инструменты редактора пользовательского интерфейса используют для визуализации предварительного просмотра макета. Это задокументировано здесь :

Этот атрибут объявляет, с какой деятельностью этот макет связан по умолчанию. Это позволяет использовать функции в редакторе или предварительном просмотре макета, которые требуют знания действия, например, какой должна быть тема макета в предварительном просмотре и куда вставлять обработчики onClick при создании из быстрого исправления.

408
Nikolay Elenkov

Этот атрибут в основном является сохранением для выбора "Связанное действие" над макетом. Во время выполнения макет всегда связан с действием. Конечно, это может быть связано с более чем одним, но по крайней мере с одним. В инструменте нам нужно знать об этом отображении (которое во время выполнения происходит в другом направлении; действие может вызывать setContentView (layout) для отображения макета), чтобы управлять определенными функциями.

Прямо сейчас мы используем его только для одной цели: выбор правильной темы для отображения в макете (поскольку файл манифеста может регистрировать темы для использования для действия , и как только мы узнаем действие, связанное с макетом, мы можем выбрать правильную тему для отображения в макете). В будущем мы будем использовать это для добавления дополнительных функций, таких как рендеринг панели действий (связанной с действием), места для добавления обработчиков onClick и т.д.

Причина, по которой это атрибут tools: namespace, заключается в том, что это только отображение времени разработки для использования инструментом. Сам макет может использоваться несколькими действиями/фрагментами и т.д. Мы просто хотим дать вам способ выбрать привязку времени разработки, чтобы мы могли, например, показать правильную тему; Вы можете изменить его в любое время, так же, как вы можете изменить наш список, привязки фрагментов и т. д.

(Вот полный набор изменений, в котором есть больше деталей о this )

И да, ссылка Николай, указанный выше, показывает, как выглядит и работает новая программа выбора конфигурации

Еще одна вещь: пространство имен "инструменты" является особенным. Инструмент упаковки Android игнорирует его, поэтому ни один из этих атрибутов не будет упакован в APK. Мы используем его для дополнительных метаданных в макете. Здесь также хранятся, например, атрибуты для подавления предупреждений lint - как инструменты: игнорировать.

368
Tor Norbye

В соответствии с Сайт проекта Android Tools :

инструменты: контекст

Этот атрибут обычно устанавливается в корневом элементе 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.Description

tools: context = "activity name" он не будет упакован в apk .Only ADT Редактор макетов в вашем текущем файле макета устанавливает соответствующий контекст рендеринга, показывает ваш текущий макет при рендеринге контекста, если имя действия соответствует действию, если действие в файл manifest устанавливает тему, затем редактор макетов ADT отобразит ваш текущий макет в соответствии с темой. Это означает, что если вы установите MainActivity, установите тему. Свет (другой), затем вы видите в диспетчере визуального макета o фоновый контроль того, что должно быть Темой. Свет выглядит так. Только чтобы показать вам, что вы видите, это то, что вы получаете результаты.

Некоторые люди видят, поймут некоторые, некоторые люди видят, также не знают, я добавлю несколько слов объяснения:

2.Sample

Возьмите простой 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 и использовал tools:text в TextView2, в правой части редактора макетов отобразится два шрифта sample name1, sample name2, если после вас запустить код для компиляции, сгенерированный apk, терминал отображает только sample name1, не показывает sample name2 слова. Вы можете попробовать запустить, посмотреть, как эффект.

3. конкретное описание

1. tools: context = "activity name" не будет упакован в apk (понимание: эквивалент этого закомментирован, скомпилированный не дает никакого эффекта.)

2.Только ADT Редактор макетов (т. Е. Для вышеуказанного значка с правой стороны симулятора) в текущем файле макета задается соответствующий контекст рендеринга. Макет текущего XML-кода при рендеринге контекста является именем действия, соответствующим деятельности, если действие в файле манифеста устанавливает тему, то редактор макетов ADT отобразит ваш текущий макет в соответствии с темой. Это означает, что если вы установите MainActivity, установите тему. Свет также может быть (другим). (Понимаю: вы добавили tools: context = "activity name", макет XML отображает указанное действие, устанавливает тему в файл манифеста, изображенный выше правого симулятора. Стиль темы также будет следовать изменениям, соответствующим теме .)

4.summary

Подводя итог, можно сказать, что эти свойства в основном ориентированы на нужные инструменты, состояние отображения времени отладки симулятора и компиляция не работает,

10
KeLiuyue

"Tools: context" - это один из атрибутов дизайна, который может облегчить создание макета в XML в среде разработки. Этот атрибут используется, чтобы показать платформе разработки, какой класс действий выбран для реализации макета. Используя "tools: context", Android Studio автоматически выбирает необходимую тему для предварительного просмотра.

Если вы хотите узнать больше о некоторых других атрибутах и ​​полезных инструментах для разработки приложений Android, ознакомьтесь с этим обзором: http://cases.azoft.com/4-must -know-инструменты-для-эффективный 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-файлу. это означает показать этот предварительный просмотр xml для perticular Java файлов.

0
Nikita Prajapati