Какие "инструменты: контекст" в файлах макета 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" />

Что такое "инструменты: контекст", используемый для?

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

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

801
задан android developer 18 июня '12 в 10:25
источник поделиться
7 ответов

Это, скорее всего, активность, которую использует редактор UI инструментов для рендеринга вашего макета (он найдет правильную тему, основанную на активности). Это описано здесь (около середины статьи, подпишитесь на эту страницу, чтобы быть в курсе).

366
ответ дан Nikolay Elenkov 18 июня '12 в 10:56
источник поделиться

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

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

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

(Здесь полный набор изменений, который содержит более подробную информацию о этом)

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

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

346
ответ дан Tor Norbye 20 июня '12 в 2:33
источник поделиться

Согласно сайту проекта 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

83
ответ дан anothercoder 20 февр. '14 в 19:16
источник поделиться

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

Если вам нравится больше узнать о некоторых других атрибутах и ​​полезных инструментах для разработки приложений для Android, просмотрите этот обзор: http://cases.azoft.com/4-must-know-tools-for-effective-android-development/

5
ответ дан Mihir Patel 13 июля '16 в 14:08
источник поделиться

Он предоставляет контекст для инструментов разработки, где будет использоваться этот макет, чтобы инструменты могли лучше помочь разработчикам, например:

Более точный просмотр превью, принятие хостинговой деятельности и его тема учитывает более умных помощников, таких как вышеупомянутые быстрые инструменты: контекст является полностью необязательным. Инструменты разработки могут и могут работать без него. Эти инструменты могут несколько унизительная помощь вам, но это ваш выбор.

tools: context - или любой атрибут в пространстве имен инструментов - не будет воздействие во время выполнения. Я не проверил, но я надеюсь, что они даже выниматься при упаковке APK, поскольку они не используются при во время выполнения.

2
ответ дан Shubham Soni 31 дек. '17 в 8:46
источник поделиться

1.Description

tools: context = "activity name" он не будет упакован в редактор компоновки apk.Only ADT в вашем текущем файле макета, установите соответствующий контекст рендеринга, покажите текущий макет при рендеринге контекста, это название активности соответствует активности, если активность в файле manifest задает тему, тогда ADT Редактор макета отобразит ваш текущий макет в соответствии с Theme.Means, если вы установите 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" />

введите описание изображения здесь

TextView 1 принял android: text и использовал tools:text в TextView 2, в правой части редактора макета отобразится sample name1, sample name2 два шрифта, если после вы запускаете код для компиляции, сгенерированный apk, терминал отображает только sample name1, не показывает слова sample name2. Вы можете попробовать запустить, посмотреть, как эффект.

3. Специфическое описание

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

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

4.summary

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

2
ответ дан KeLiuyue 15 окт. '17 в 6:57
источник поделиться

tools:context=".MainActivity" thisline используется в файле xml, который указывает, какой исходный файл java используется для доступа к этому XML файлу. это означает показать этот предварительный просмотр xml для perticular java файлов.

1
ответ дан Nikita Prajapati 08 мая '17 в 10:33
источник поделиться

Другие вопросы по меткам или Задайте вопрос