Pregunta ¿Qué es "herramientas: contexto" en los archivos de diseño de Android?


Comenzando con una nueva versión reciente de ADT, he notado este nuevo atributo en los archivos XML de diseño, por ejemplo:

<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" />

¿Para qué se usan las "herramientas: contexto"?

¿Cómo sabe siquiera el camino exacto a la actividad que está escrita allí? ¿Mira el paquete de la aplicación, dentro del manifiesto?

¿Está limitado a clases que extienden el contexto o solo actividades? ¿Es utilizable para elementos de ListView, etc.?


821
2018-06-18 07:25


origen


Respuestas:


Esta es probablemente la actividad que usa el editor de interfaz de usuario de herramientas para representar su diseño (encontrará el tema adecuado según la actividad). Esto está documentado aquí (en la mitad del artículo, suscríbase a esa página para mantenerse actualizado).


374
2018-06-18 07:56



Ese atributo es básicamente la persistencia para la selección de "Actividad asociada" arriba del diseño. En tiempo de ejecución, un diseño siempre está asociado a una actividad. Por supuesto, puede asociarse con más de uno, pero al menos uno. En la herramienta, necesitamos saber acerca de esta asignación (que en el tiempo de ejecución ocurre en la otra dirección, una actividad puede llamar a setContentView (diseño) para mostrar un diseño) con el fin de controlar ciertas características.

En este momento, lo estamos usando solo para una cosa: Elegir el tema correcto para mostrarlo en un diseño (ya que el archivo de manifiesto puede registrar temas para usarlos actividad, y una vez que conocemos la actividad asociada con el diseño, podemos elegir el tema adecuado para mostrar para el diseño). En el futuro, usaremos esto para dirigir funciones adicionales, como renderizar la barra de acciones (que está asociada a la actividad), un lugar para agregar a los manejadores de Click, etc.

La razón por la cual se trata de una herramienta: el atributo de espacio de nombres es que esta es solo una asignación designtime para que la use la herramienta. El diseño en sí puede ser utilizado por múltiples actividades / fragmentos, etc. Solo queremos darle una forma de elegir un enlace de tiempo designado de modo que podamos, por ejemplo, mostrar el tema correcto; puede cambiarlo en cualquier momento, al igual que puede cambiar nuestra lista de vista y enlaces de fragmentos, etc.

(Aquí está el conjunto de cambios completo que tiene más detalles sobre esta)

Y si, el enlace Nikolay enumerado arriba muestra cómo se ve el nuevo selector de configuración y funciona

Una cosa más: el espacio de nombres de "herramientas" es especial. La herramienta de empaquetado de Android sabe ignorarlo, por lo que ninguno de esos atributos se empaquetará en el APK. Lo estamos usando para metadatos adicionales en el diseño. También es donde, por ejemplo, se almacenan los atributos para suprimir las advertencias de pelusa, como herramientas: ignorar.


352
2018-06-19 23:33



De acuerdo con la Sitio de proyecto de Android Tools:

herramientas: contexto 

Este atributo generalmente se establece en el elemento raíz en un archivo XML de diseño y registra a qué actividad está asociado el diseño (en designtime, ya que obviamente un diseño puede ser utilizado por más de un diseño). Esto, por ejemplo, será utilizado por el editor de diseño para adivinar un tema predeterminado, ya que los temas se definen en el Manifiesto y están asociados con actividades, no con diseños. Puede usar el mismo prefijo de punto que en manifiestos para simplemente especificar la clase de actividad sin el nombre completo del paquete de la aplicación como prefijo.

<android.support.v7.widget.GridLayout
    xmlns:android="http://schemas.android.com/apk/res/android"    
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".MainActivity">  

Utilizado por: editores de diseño en Studio & Eclipse, Lint


84
2018-02-20 16:16



"Herramientas: contexto" es uno de los atributos de diseño que puede facilitar la creación de diseño en XML en el marco de desarrollo. Este atributo se usa para mostrar el marco de desarrollo de qué clase de actividad se elige para implementar el diseño. Usando "herramientas: contexto", Android Studio elige automáticamente el tema necesario para la vista previa.

Si desea obtener más información sobre algunos otros atributos y herramientas útiles para el desarrollo de aplicaciones de Android, eche un vistazo a esta revisión: http://cases.azoft.com/4-must-know-tools-for-effective-android-development/


5
2017-07-13 11:08



1. Descripción

tools: context = "activity name" no será empacado en el apk .Solamente ADT El Editor de diseño en su archivo de diseño actual establece el contexto de representación correspondiente, muestra su Diseño actual al representar el contexto en el que el nombre de la actividad corresponde a la actividad, si la actividad en el manifest archivo establecer un tema, luego ADT Layout Editor mostrará su diseño actual de acuerdo con el tema. Significa que si configura el MainActivity establecer un tema La Luz (la otra), luego ves en el administrador de diseño visual o control de fondo de lo que debería ser el Tema. La Luz se parece. Solo para mostrarte lo que ves es de lo que obtienes resultados.

Algunas personas ven que entenderán algunas, algunas personas ven las que también no saben, añadiré algunas palabras de explicación:

2. Muestra

Tome un simple tools:text, por ejemplo, un poco más de imagen, conveniente para comprender mejor el 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 adoptó el android: texty usa el tools:text en el TextView2, en el lado derecho del editor de diseño se mostrará el sample name1, el sample name2 dos fuentes, si después de ejecutar el código para compilar, genera apk, terminal muestra solo el sample name1, no muestra el sample name2 las palabras. Puedes intentar correr, ver cómo funciona el efecto.

3.Descripción específica

1. El tools: context = "activity name" no será empacado en el apk(Entendimiento: el equivalente de esto se comenta, el compilado no tiene efecto).

2. Solo ADT El Editor de diseño (es decir, para el ícono de arriba en el lado derecho del simulador) en el archivo de Diseño actual establece el contexto de representación correspondiente, el Diseño del XML actual al representar el contexto es el nombre de la actividad corresponde a la actividad, si la actividad de el archivo de manifiesto establece un Tema, luego ADT Layout Editor mostrará su diseño actual de acuerdo con el tema. Significa que si configura el MainActivity establecer un tema La Luz también puede ser (otra). (Comprende: has añadido tools: context = "activity name", el diseño XML representa la actividad especificada, establece un Tema en el archivo de manifiesto, en la imagen superior derecha. El estilo del tema también seguirá los cambios correspondientes al Tema.)

4. resumen

En resumen, estas propiedades apuntan principalmente a las herramientas adecuadas, el estado de visualización del tiempo de depuración del simulador y la compilación no funciona.


4
2017-10-15 03:57



tools:context=".MainActivity" thisline se usa en un archivo xml que indica qué archivo fuente java se utiliza para acceder a este archivo xml. significa mostrar esta vista previa de xml para archivos java perticulares.


1
2018-05-08 07:33