¿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.
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.
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);
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
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