¿Cómo incluir el diseño dentro del diseño?

6 minutos de lectura

avatar de usuario
Mohan

¿Cómo incluir el diseño dentro del diseño en Android?

Estoy creando un diseño común. Quiero incluir ese diseño en otra página.

  • Hay un ejemplo de uso simple. [in this post][1] [1]: stackoverflow.com/questions/2732682/…

    –Asaf Pinhassi

    11 de agosto de 2011 a las 8:20

avatar de usuario
miguel rosa

Editar: Como en un comentario solicitado aquí con razón algo más de información. Utilizar el include etiqueta

<include
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   layout="@layout/yourlayout" />

para incluir el diseño que desea reutilizar.

Controlar este enlace fuera…

  • solo un pequeño detalle: usa android:layout_width=”match_parent” en lugar de android:layout_width=”fill_parent”. fill_parent está en desuso.

    – Agna JirKon Rx

    24 de mayo de 2017 a las 14:33


  • ¿Puedo incluir un diseño y establecer algunas de sus propiedades a través del xml, por ejemplo, establecer una cadena de texto en el subdiseño directamente en la etiqueta ?

    – JohnyTex

    3 mayo 2019 a las 10:22

  • @JohnyTex No estoy seguro si puedes hacerlo directamente en el <include /> etiqueta, sin embargo, puede hacerlo usando código java. consulte la respuesta de Phileo99 a continuación para saber cómo obtener una referencia al diseño incluido. y luego puedes modificar su contenido.

    – Musa Halaseh

    5 de octubre de 2019 a las 16:44


  • Tenga en cuenta que NO ES NECESARIO incluir los elementos de diseño en la etiqueta de inclusión. Puede tenerlos en el “cuerpo incluido” (el subarchivo) y funciona perfectamente de la misma manera.

    – Gordito

    9 de marzo de 2021 a las 11:47

Tenga en cuenta que si incluye android:id... en el <include /> etiqueta, anulará cualquier ID que se definió dentro del diseño incluido. Por ejemplo:

<include
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:id="@+id/some_id_if_needed"
   layout="@layout/yourlayout" />

sudiseño.xml:

<LinearLayout
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:id="@+id/some_other_id">
   <Button
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:id="@+id/button1" />
 </LinearLayout>

Luego, haría referencia a este diseño incluido en el código de la siguiente manera:

View includedLayout = findViewById(R.id.some_id_if_needed);
Button insideTheIncludedLayout = (Button)includedLayout.findViewById(R.id.button1);

avatar de usuario
Grandioso

Utilizar <include /> etiqueta.

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

Además, lee Creación de componentes de interfaz de usuario reutilizables y Combinar diseños artículos.

  • Ambos enlaces ya no existen.

    – Jimmy

    16 de abril de 2014 a las 14:26

Prueba esto

<include
            android:id="@+id/OnlineOffline"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            layout="@layout/YourLayoutName" />

De documentos oficiales sobre Reutilización de diseños

Aunque Android ofrece una variedad de widgets para proporcionar elementos interactivos pequeños y reutilizables, es posible que también deba reutilizar componentes más grandes que requieren un diseño especial. Para reutilizar diseños completos de manera eficiente, puede usar la etiqueta para incrustar otro diseño dentro del diseño actual.

Aquí está mi encabezado.xml archivo que puedo reutilizar usando incluir etiqueta

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#FFFFFF"
    >


    <TextView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:gravity="center"
        android:text="@string/app_name"
        android:textColor="#000000" />

</RelativeLayout>

No, yo uso el etiqueta en XML para agregar otro diseño de otro archivo XML.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#f0f0f0" >


    <include
        android:id="@+id/header_VIEW"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        layout="@layout/header" />

        <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:background="#ffffff"
        android:orientation="vertical"
        android:padding="5dp" >


    </LinearLayout>

  • ¿Por qué poner TextView en un RelativeLayout y no como la vista raíz?

    – Florián Walther

    27 de marzo de 2018 a las 12:36

  • @FlorianWalther Este es un ejemplo

    – IntelliJ Amiya

    27 de marzo de 2018 a las 12:46

  • Gracias por la rápida respuesta. Pero, ¿tengo razón en que podría poner TextView como elemento raíz o me estoy perdiendo algo? Porque quiero reutilizar una ProgressBar y me pregunto si tengo que ponerla en un diseño.

    – Florián Walther

    27 de marzo de 2018 a las 12:48


  • @FlorianWalther Because I want to reuse a ProgressBar que problema viene?

    – IntelliJ Amiya

    27 de marzo de 2018 a las 12:52

  • No hay problema, funciona. Pero todos los ejemplos que veo en línea ponen el widget único en otro diseño y me pregunto por qué.

    – Florián Walther

    27 de marzo de 2018 a las 12:53

Obtenga más información usando este enlace
https://developer.android.com/training/improving-layouts/reusing-layouts.html

    <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".Game_logic">
    
          
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal">
    
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="5dp"
                    android:id="@+id/text1"
                    android:textStyle="bold"
                    tools:text="Player " />
    
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textStyle="bold"
                    android:layout_marginLeft="20dp"
    
                    android:id="@+id/text2"
                    tools:text="Player 2" />
          
            
          
        </LinearLayout>
    </androidx.constraintlayout.widget.ConstraintLayout>

Cita en bloque

  • El diseño anterior se puede usar en otra actividad usando

     <?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
                      xmlns:app="http://schemas.android.com/apk/res-auto"
                      xmlns:tools="http://schemas.android.com/tools"
                      android:layout_width="match_parent"
                      android:layout_height="match_parent"
                      tools:context=".SinglePlayer">   
    
              <include layout="@layout/activity_game_logic"/> 
          </androidx.constraintlayout.widget.ConstraintLayout>
    

  • ¿Por qué poner TextView en un RelativeLayout y no como la vista raíz?

    – Florián Walther

    27 de marzo de 2018 a las 12:36

  • @FlorianWalther Este es un ejemplo

    – IntelliJ Amiya

    27 de marzo de 2018 a las 12:46

  • Gracias por la rápida respuesta. Pero, ¿tengo razón en que podría poner TextView como elemento raíz o me estoy perdiendo algo? Porque quiero reutilizar una ProgressBar y me pregunto si tengo que ponerla en un diseño.

    – Florián Walther

    27 de marzo de 2018 a las 12:48


  • @FlorianWalther Because I want to reuse a ProgressBar que problema viene?

    – IntelliJ Amiya

    27 de marzo de 2018 a las 12:52

  • No hay problema, funciona. Pero todos los ejemplos que veo en línea ponen el widget único en otro diseño y me pregunto por qué.

    – Florián Walther

    27 de marzo de 2018 a las 12:53

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad