Import xml en otro xml

Tengo un montón de control repetido en mi xml (un Button por ejemplo). ¿Hay alguna posibilidad de escribir el Button una vez en un xml y luego importarlo en todo el diseño que lo necesito?

Puedes usar

 <include layout="@layout/commonlayout" android:id="@+id/id" /> 

commonlayout.xml debe definirse en res/layout donde se pueden agregar las partes repetidas.

Como bien dice Labeeb P , funciona. Sólo quiero agregar que también puede anular parámetros demasiado:

 <include layout="@layout/commonlayout" android:id="@+id/id" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:layout_marginLeft="2sp" android:layout_marginRight="2sp" /> 

Además de esas grandes respuestas, también puede evitar la duplicación de código mediante la etiqueta <merge> , así:

 <merge xmlns:android="http://schemas.android.com/apk/res/android"> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/add"/> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/delete"/> </merge> 

La parte <merge> se despoja al incluirla en otro xml. Esto podría ayudar a incluir más de un Button a la vez. Consulte la documentación oficial .

Puede utilizar la etiqueta XML de include predeterminada para incluir un diseño externo:

 <include layout="@layout/somelayout" /> 

Este diseño debe tener un ViewGroup externo que encapsule el contenido o una etiqueta de merge para evitar tener que utilizar un diseño innecesario:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:text="@string/hello_world" /> </LinearLayout> <!-- OR --> <merge xmlns:android="http://schemas.android.com/apk/res/android"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:text="@string/hello_world" /> </merge> 

Además, si necesita una mejor forma de incluir elementos de diseño que actúan como un contenedor (un grupo de ViewGroup personalizado), puede utilizar este grupo de vistas personalizado . Tenga en cuenta que esto no importa un XML en otro archivo XML, infla el contenido del diseño externo y lo sustituye en la vista. Es similar a ViewStub , un "ViewGroupStub" como.

Esta lib actúa como si el ViewStub pudiera utilizar como sigue ( tenga en cuenta que este ejemplo no funciona! ViewStub no es una subclase ViewGroup ! ):

 <ViewStub layout="@layout/somecontainerlayout" inflate_inside="@+id/somecontainerid"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:text="@string/hello_world" /> </ViewStub> 
  • Cómo aumentar el tamaño de transport.dump de 256 bytes a 512 o más bytes en KSOAP2?
  • Color Estado Lista no reconocida en forma Drawable
  • Equivalencia de setTag (clave, valor) en XML
  • Post datos UTF-8 codificados en el servidor pierde ciertos caracteres
  • ¿Por qué el archivo de diseño xml de Android no reconoce la ayuda de contenido mediante ctrl + espacio?
  • Recursos de importación android de proyecto de biblioteca
  • La previsualización del estudio Android desaparece cuando se agrega NestedScrollView a XML
  • Disposición de teclado personalizada de Android dejando un margen de blanco en el lateral
  • Cambiar android: Theme.Dialog para encender el cuadro de diálogo de AppCompat
  • La ventana emergente AutoCompleteTextView de Android se mueve tras mostrar
  • ¿Cómo obligo a eclipse a mostrar diseños y estilos xml como texto?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.