Что такое "инструменты: контекст" в файлах макета 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 ответов:
Это, скорее всего, действие, которое редактор пользовательского интерфейса инструментов использует для визуализации вашего макета (он найдет правильную тему на основе действия). Это задокументировано здесь (примерно в середине статьи; подписаться на эту страницу, чтобы быть в курсе).
этот атрибут в основном является сохраняемостью для выбора "связанной активности" над макетом. Во время выполнения макет всегда связан с действием. Он, конечно, может быть связан с более чем одним, но по крайней мере один. В инструменте нам нужно знать об этом отображении(которое во время выполнения происходит в другом направлении; действие может вызвать 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" />
TextView
1 принялаandroid: text
, и использоватьtools:text
наTextView
2, в правой части редактора макета будет отображаться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/