Recurso de diseño
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
Un recurso de diseño define la arquitectura de la IU en una Actividad o en un componente de una IU.
- ubicación del archivo:
res/layout/filename.xml
Se utilizará el nombre de archivo como ID de recurso.
- tipo de datos de recursos compilados:
- Puntero de recurso a un recurso
View
(o de subclase).
- referencia del recurso:
-
En Java:
R.layout.filename
En XML: @[package:]layout/filename
- sintaxis:
-
<?xml version="1.0" encoding="utf-8"?>
<ViewGroup
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@[+][package:]id/resource_name"
android:layout_height=["dimension" | "match_parent" | "wrap_content"]
android:layout_width=["dimension" | "match_parent" | "wrap_content"]
[ViewGroup-specific attributes] >
<View
android:id="@[+][package:]id/resource_name"
android:layout_height=["dimension" | "match_parent" | "wrap_content"]
android:layout_width=["dimension" | "match_parent" | "wrap_content"]
[View-specific attributes] >
<requestFocus/>
</View>
<ViewGroup >
<View />
</ViewGroup>
<include layout="@layout/layout_resource"/>
</ViewGroup>
Nota: El elemento raíz puede ser un elemento ViewGroup
, View
o <merge>
, pero solo debe haber un elemento raíz, y este debe contener el atributo xmlns:android
con el espacio de nombres android
como se muestra.
- elementos:
-
<ViewGroup>
- Es un contenedor para otros elementos
View
. Hay muchos tipos diferentes de objetos ViewGroup
, y cada uno te permite especificar el diseño de los elementos secundarios de distintas maneras. Algunos tipos de objetos ViewGroup
son LinearLayout
, RelativeLayout
y FrameLayout
.
No debes suponer que cualquier derivación de ViewGroup
aceptará elementos View
anidados. Algunos ViewGroup
son implementaciones de la clase AdapterView
, que determina sus elementos secundarios solo a partir de un Adapter
.
atributos:
android:id
- ID de recurso. Un nombre de recurso único para el elemento, que puedes usar a fin de obtener una referencia al
ViewGroup
de tu aplicación. A continuación, puedes consultar más información sobre el valor para android:id
.
android:layout_height
- Dimensión o palabra clave. Obligatoria. Corresponde a la altura del grupo, como un valor de dimensión (o recurso de dimensión) o una palabra clave (
"match_parent"
o "wrap_content"
). Consulta los valores válidos a continuación.
android:layout_width
- Dimensión o palabra clave. Obligatoria. Es el ancho del grupo, como un valor de dimensión (o recurso de dimensión) o una palabra clave (
"match_parent"
o "wrap_content"
). Consulta los valores válidos a continuación.
La clase base ViewGroup
admite más atributos y, a su vez, cada implementación de ViewGroup
admite muchos más. Para obtener una referencia de todos los atributos disponibles, consulta la documentación de referencia correspondiente a la clase ViewGroup
(por ejemplo, los atributos XML de LinearLayout).
<View>
- Es un componente de IU individual, por lo general, denominado "widget". Algunos tipos de objetos
View
son TextView
, Button
y CheckBox
.
atributos:
android:id
- ID de recurso. Un nombre de recurso único para el elemento, que puedes usar a fin de obtener una referencia al
View
de tu aplicación. A continuación, puedes consultar más información sobre el valor para android:id
.
android:layout_height
- Dimensión o palabra clave. Obligatoria. Es la altura del elemento, como un valor de dimensión (o recurso de dimensión) o una palabra clave (
"match_parent"
o "wrap_content"
). Consulta los valores válidos a continuación.
android:layout_width
- Dimensión o palabra clave. Obligatoria. Es el ancho del elemento, como un valor de dimensión (o recurso de dimensión) o una palabra clave (
"match_parent"
o "wrap_content"
). Consulta los valores válidos a continuación.
La clase base View
admite más atributos y, a su vez, cada implementación de View
admite muchos más. Consulta Diseños para obtener más información. Si quieres una referencia de todos los atributos disponibles, consulta la documentación de referencia correspondiente (por ejemplo, los atributos TextView XML).
<requestFocus>
- Cualquier elemento que represente un objeto
View
puede incluir este elemento vacío, lo que le da al elemento superior el foco inicial en la pantalla. Solo puedes tener uno de estos elementos por archivo.
<include>
- Incluye un archivo de diseño en este diseño.
atributos:
layout
- Recurso de diseño. Obligatorio. Es la referencia a un recurso de diseño.
android:id
- ID de recurso. Anula el ID proporcionado a la vista raíz en el diseño incluido.
android:layout_height
- Dimensión o palabra clave. Anula la altura asignada a la vista raíz en el diseño incluido. Esta acción solo es efectiva si también se declara
android:layout_width
.
android:layout_width
- Dimensión o palabra clave. Anula el ancho asignado a la vista raíz en el diseño incluido. Esta acción solo es efectiva si también se declara
android:layout_height
.
Puedes agregar cualquier otro atributo de diseño en <include>
que sea compatible con el elemento raíz en el diseño incluido, y este anulará todos los definidos en el elemento raíz.
Advertencia: Si deseas anular los atributos de diseño con la etiqueta <include>
, debes anular android:layout_height
y android:layout_width
para que se apliquen otros atributos de diseño.
Otra forma de incluir un diseño es usar ViewStub
. Es un elemento View liviano que no consume espacio de diseño hasta que lo completas explícitamente, en cuyo caso incluye un archivo de diseño definido por su atributo android:layout
. Para obtener más información sobre el uso de ViewStub
, consulta Cómo cargar vistas a pedido.
<merge>
- Un elemento raíz alternativo que no se dibuja en la jerarquía de diseño. Usar este elemento como raíz es útil cuando sabes que el diseño se colocará en uno que ya contiene el elemento View principal adecuado para contener los elementos secundarios del elemento
<merge>
. En especial, es útil si planeas usar <include>
para incluir este diseño en otro archivo de diseño que no requiera un contenedor ViewGroup
diferente. Para obtener más información sobre la combinación de diseños, consulta Reutilización de diseños con <include>.
Valor de android:id
Para el valor de ID, por lo general, debes usar esta sintaxis: "@+id/name"
. El símbolo +, +
, indica que es un nuevo ID de recurso, y la herramienta aapt
creará un nuevo número entero de recurso en la clase R.java
, si aún no existe. Por ejemplo:
<TextView android:id="@+id/nameTextbox"/>
El nombre nameTextbox
ahora es un ID de recurso adjunto a este elemento. Luego, puedes consultar el TextView
al que está asociado el ID en Java:
Kotlin
val textView: TextView? = findViewById(R.id.nameTextbox)
Java
TextView textView = findViewById(R.id.nameTextbox);
Este código muestra el objeto TextView
.
Sin embargo, si ya definiste un recurso de ID (y aún no se utilizó), puedes aplicar el ID a un elemento View
excluyendo el símbolo + en el valor android:id
.
Valor para android:layout_height
y android:layout_width
:
El valor de alto y ancho se puede expresar con cualquiera de las unidades de dimensión compatibles con Android (px, dp, sp, pt, in, mm) o las siguientes palabras clave:
Valor | Descripción |
match_parent |
Configura la dimensión para que coincida con la del elemento principal. Se agregó en el nivel de API 8 para dar de baja fill_parent . |
wrap_content |
Configura la dimensión solo en el tamaño necesario para que se adapte al contenido de este elemento. |
Elementos de vista personalizada
Puedes crear tus propios elementos View
y ViewGroup
personalizados, y aplicarlos a tu diseño de la misma manera que un elemento de diseño estándar. También puedes especificar los atributos compatibles con el elemento XML. Puedes obtener más información en la guía para desarrolladores sobre Componentes personalizados.
- ejemplo:
- Archivo en formato XML guardado en
res/layout/main_activity.xml
:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello, I am a TextView" />
<Button android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello, I am a Button" />
</LinearLayout>
Este código de aplicación cargará el diseño para un Activity
en el método onCreate()
:
-
Kotlin
public override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.main_activity)
}
Java
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
}
- consulta también:
-
El contenido y las muestras de código que aparecen en esta página están sujetas a las licencias que se describen en la Licencia de Contenido. Java y OpenJDK son marcas registradas de Oracle o sus afiliados.
Última actualización: 2022-12-01 (UTC)
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"Falta la información que necesito"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"Muy complicado o demasiados pasos"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"Desactualizado"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"Problema de traducción"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"Problema con las muestras o los códigos"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"Otro"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"Fácil de comprender"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"Resolvió mi problema"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"Otro"
}]