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

6 838

6 ответов:

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

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

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

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

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

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

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

по словам Сайт Проекта Android Tools:

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

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

<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 на 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.резюме

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

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

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

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