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

6 ответов


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


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

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

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

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

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

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


по словам Сайт Проекта 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


1.Описание

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

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

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

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

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

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

4.резюме

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


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

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


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