Documentos de Académico
Documentos de Profesional
Documentos de Cultura
sencilla
Contenido
Abrir el editor de diseño
Agregar un cuadro de texto
Agregar un botón
Cambiar las strings de IU
Hacer que el tamaño del cuadro de texto sea flexible
Ejecutar la app
En esta lección, usarás Android Studio Layout Editor para crear un diseño que
incluya un cuadro de texto y un botón. En la lección siguiente, harás que la app
responda al tocar el botón enviando el contenido del cuadro de texto a otra
activity.
La interfaz de usuario para una app de Android se construye usando una jerarquía
de diseños (objetos ViewGroup) y widgets (objetos View). Los diseños son
contenedores invisibles que controlan la manera en que se posicionan sus vistas
secundarias en la pantalla. Los widgets son componentes de la IU, como los
botones y los cuadros de texto.
Figura 2: Ilustración de cómo los objetos ViewGroup forman ramas en el diseño y
contienen objetos View.
Android proporciona un vocabulario XML para las clases ViewGroup y View, por lo
que la mayor parte de tu IU se define en archivos XML. Sin embargo, el propósito
de esta lección no es enseñarte a escribir en lenguaje XML, sino mostrarte cómo
crear diseños usando Android Studio Layout Editor, que te permite construirlos
fácilmente arrastrando y soltando vistas.
Nota: En esta lección, se presupone que usas Android Studio 3.0 y que has seguido
las indicaciones de la lección anterior para crear tu proyecto de Android.
1. En la ventana Project de Android Studio, abre app > res > layout >
activity_main.xml.
2. Para hacer más espacio para el editor de diseño, oculta la ventana Project
seleccionando View > Tool Windows > Project (o haciendo clic en Project en el
lado izquierdo de Android Studio).
3. Haz clic en la vista del editor de diseño. Ahora podrás ver los controladores para
cambiar el tamaño en cada esquina (cuadrados) y los anclajes de restricción en
cada lado (círculos).
4. Haz clic sobre el anclaje del lado superior y, sin soltar el botón, arrástralo hacia
arriba hasta que se acople a la parte superior del diseño y suéltalo. Eso es una
restricción; especifica que la vista debe estar a 16 dp de la parte superior del
diseño (ya que configuraste los márgenes predeterminados en 16 dp).
5. Del mismo modo, crea una restricción desde el lado izquierdo de la vista hasta el
lado izquierdo del diseño.
Agregar un botón
Figura 6: El botón tiene restricciones respecto del lado derecho del cuadro de texto
y de su línea de base.
1. Desde la ventana Palette, haz clic en Widgets en el subpanel izquierdo, arrastra
Button hacia el editor de diseño y suéltalo cerca del lado derecho.
2. Crea una restricción desde el lado izquierdo del botón hasta el lado derecho del
cuadro de texto.
3. Para restringir las vistas en una alineación horizontal, debes crear una restricción
entre las líneas de base del texto. Para eso, haz clic en el botón y luego en Edit
Nota: También puedes crear una alineación horizontal usando los bordes superior
o inferior, pero el botón incluye relleno alrededor de su imagen. Por ello, la
alineación visual será errónea si alineas estas vistas de esa manera.
Para generar una vista previa de la IU, haz clic en Select Design Surface en la
barra de herramientas y selecciona Design. Ten en cuenta que la entrada de texto
se completa previamente con “Name” y el botón lleva la etiqueta “Button”.
Cambiarás estas strings.
1. Abre la ventana Project y luego abre app > res > values > strings.xml.
2. Haz clic en Open editor en la parte superior de la ventana del editor. Con esto se
abre Translations Editor, que proporciona una interfaz simple para agregar y editar
tus strings predeterminadas, y ayuda a mantener organizadas todas tus strings
traducidas.
3.
Haz clic en Add Key a fin de crear una string nueva como “texto indicado” para
el cuadro de texto.
Ahora podrás configurar estas strings para cada vista. Para eso, regresa al archivo
de diseño haciendo clic en activity_main.xml en la barra de pestañas y agrega las
strings de la siguiente manera:
1. Haz clic en el cuadro de texto del diseño y, si la ventana Attributes no está visible a
3. Ubica la propiedad hint y haz clic en Pick a Resource a la derecha del cuadro
de texto. Dentro del diálogo que se muestra, haz doble clic en edit_message en la
lista.
4. Ahora haz clic en el botón en el diseño, ubica la propiedad text, haz clic en Pick a
1. Selecciona ambas vistas (haz clic con el botón primario en una, mantén
presionado Shift y haz clic con el mismo botón en la otra) y luego haz clic con el
botón secundario en cualquiera de las vistas y selecciona Chain > Create
Horizontal Chain.
Una cadena es una restricción bidireccional entre dos o más vistas que te permite
organizar las vistas encadenadas de forma simultánea.
3. Ahora, haz clic en el cuadro de texto para ver sus atributos. Haz clic dos veces en
el indicador de ancho para fijarlo en Match Constraints, como se indica en la
referencia. 1 de la figura 9.
Si te parece que tu diseño no quedó como se esperaba, haz clic en el vínculo que
sigue para ver cómo debería verse tu XML y compararlo con lo que ves en la
pestaña Text. (Si tus atributos aparecen en un orden diferente, no habrá
problemas).
<EditText
android:id="@+id/editText"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:ems="10"
android:hint="@string/edit_message"
android:inputType="textPersonName"
app:layout_constraintEnd_toStartOf="@+id/button"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:layout_marginStart="16dp"
android:text="@string/button_send"
app:layout_constraintBaseline_toBaselineOf="@+id/editText"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/editText" />
</android.support.constraint.ConstraintLayout>
Para obtener más información sobre las cadenas y todo lo que puedes hacer con
ConstraintLayout, lee Compilar una IU receptiva con ConstraintLayout.
Ejecutar la app
el nuevo diseño. También puedes hacer clic en Run para instalar y ejecutar la
app.
El botón todavía no tiene funciones. Para iniciar otra activity cuando se toca el
botón, continúa con la siguiente lección.
Iniciar otra activity
Contenido
Responder al botón Send
Crear una intent
Crear la segunda activity
Agregar una vista de texto
Mostrar el mensaje
Agregar navegación superior
Ejecutar la app
Después de completar la lección anterior, tendrás una app que mostrará una activity
(una única pantalla) con un campo de texto y un botón. En esta lección, agregarás
a MainActivity un fragmento de código que iniciará una nueva activity para mostrar
el mensaje cuando el usuario toque Send.
Es posible que veas un error, ya que Android Studio no puede resolver la clase View
que se usa como argumento del método. Por lo tanto, haz clic para posicionar tu
cursor en la declaración View y luego realiza una corrección rápida presionando Alt
+ Enter (en Mac, Option + Enter). (Si aparece un menú, selecciona Import class).
Toma nota de los detalles de este método que se requieren para que el sistema lo
reconozca como compatible con el atributo android:onClick. En concreto, el método
debe declarar lo siguiente:
acceso público;
una View como único parámetro (es el objeto View en el que se hizo clic).
Luego, completarás este método para leer el contenido del campo de texto y
proporcionar dicho texto a otra activity.
Android Studio nuevamente mostrará los errores Cannot resolve symbol. Presiona
Alt + Enter (en Mac, Option + Return). Tus importaciones deben tener el siguiente
aspecto final:
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
un elemento Context como su primer parámetro (se usa this porque la clase Activity
es una subclase de Context);
la Class del componente de la app a la cual el sistema debe entregar la Intent (en
este caso, la activity que debe iniciarse).
El método putExtra() agrega el valor de EditText a la intent. Una Intent puede llevar
tipos de datos como pares clave-valor denominados extras. Tu clave es una
constante pública EXTRA_MESSAGE porque la activity siguiente usa la clave para
obtener el valor de texto. Se recomienda definir claves para los extras de intents
usando el nombre del paquete de tu app como prefijo. Esto garantiza que las
claves sean únicas, en el caso de que tu app interactúe con otras apps.
3. En la ventana Pallete, haz clic en Text y luego arrastra un TextView hacia el diseño;
ubícalo cerca de la parte superior del diseño, en un punto cercano al centro para
que se acople a la línea vertical que aparece. La opción “Autoconnect” agrega
restricciones a la derecha y a la izquierda para ubicar la vista en el centro
horizontal.
4. Crea una restricción más desde la parte superior de la vista de texto hasta la parte
superior del diseño, para que tenga el aspecto de la figura 1.
Mostrar el mensaje
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display_message);
// Get the Intent that started this activity and extract the string
Intent intent = getIntent();
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
// Capture the layout's TextView and set the string as its text
TextView textView = findViewById(R.id.textView);
textView.setText(message);
}
2. Presiona Alt + Enter (en Mac, Option + Return) para importar las clases faltantes.
Tus importaciones deben tener el siguiente aspecto final:
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
En cada pantalla de tu app que no sea la entrada principal (todas las pantallas que
no sean la de inicio) se debe proporcionar navegación. De esta forma, el usuario
puede regresar a la pantalla primaria lógica en la jerarquía de la app presionando el
botón Up en la barra de la app.
<activity android:name=".DisplayMessageActivity"
android:parentActivityName=".MainActivity" >
<!-- The meta-data tag is required if you support API level 15 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".MainActivity" />
</activity>
Ejecutar la app
Ahora ejecuta nuevamente la app haciendo clic en Apply Changes en la barra
de herramientas. Cuando se abra, escribe un mensaje en el campo de texto y toca
Send para que el mensaje aparezca en la segunda activity.