TextView. Button. Взаимодействие с View.

Урок #7

Урок 7 — TextView. Button. Взаимодействие с View.

В этом уроке вы узнаете о двух новых ViewTextView и Button, а также научитесь базово взаимодействовать с View из Java-кода.

TextView

TextView отвечает за отображение текста.

Измените код activity_main.xml, чтобы он выглядел следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical"
    tools:context="com.test.lessons.MainActivity">

    <TextView
        android:id="@+id/hello_tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello" />

</LinearLayout>

Запустите приложение:

TextView
TextView

Кстати, у каждого View есть атрибут gravity. Он работает так же, как и layout_gravity, но изменяет не положение View относительно контейнера, а положение контента внутри этого View.

В данном случае, как вы могли заметить, я поместил TextView по центру, задав атрибут gravity у LinearLayout.

Вернемся к TextView. Первое, на что стоит обратить внимание — это значения в layout_width и layout_height. Там выставлен wrap_content, таким образом, TextView занимает ровно столько места, сколько занимает текст внутри него.

Атрибут android:text

Самый важный атрибут TextView — это android:text. Как нетрудно догадаться, с помощью него задается текст внутри TextView.

Его можно задавать просто текстом, а можно ссылкой на строковый ресурс (об этом попозже).

Атрибут android:textStyle

Это атрибут задает стиль текста и принимает следующие значения:

  • normal — обычный текст. Это — значение по умолчанию.
  • bold — жирный текст
  • italic — курсив

bold и italic можно использовать по отдельности, а можно и комбинировать:

Атрибут android:textStyle у TextView
Атрибут android:textStyle у TextView

Атрибут android:textColor

Этим атрибутом задается цвет текста. Может принимать следующие значения:

  • Ссылка на ресурс
  • Значение в формате #RGB, #ARGB, #AARRGGBB, #RRGGBB

Например, давайте сделаем текст красным:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical"
    tools:context="com.test.lessons.MainActivity">

    <TextView
        android:id="@+id/hello_tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello"
        android:textColor="#ff0000" />

</LinearLayout>

Атрибут android:textColor у TextView
Атрибут android:textColor у TextView

Атрибут android:textSize

Задает размер текста. Задается в sp. Что это такое — вы узнаете в одном из следующих уроков. Давайте увеличим текст:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical"
    tools:context="com.test.lessons.MainActivity">

    <TextView
        android:id="@+id/hello_tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello"
        android:textSize="28sp" />

</LinearLayout>

Атрибут android:textSize у TextView
Атрибут android:textSize у TextView

А теперь поговорим о кнопках.

Button

За кнопки в Android отвечает, как ни странно, Button.

На самом деле, Button — это наследник TextView с некоторыми изменениями, и поэтому она обладает всеми теми же атрибутами, про которые мы говорили чуть выше.

Давайте добавим под TextView кнопку:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical"
    tools:context="com.test.lessons.MainActivity">

    <TextView
        android:id="@+id/hello_tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello"
        android:textSize="28sp" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Say hello!" />

</LinearLayout>

Кнопка в Android
Кнопка в Android

Кнопка отображается и даже визуально откликается на нажатия, но ничего не происходит. А все потому что нам нужно заставить её выполнять какие-то действия.

Обработка нажатия

Давайте сформулируем задачу: при нажатии на кнопку текст в TextView должен измениться на "Hi!".

Соответственно, что надо сделать? Надо каким-то образом получить событие нажатия на кнопку, и установить текст в TextView.

Определенно, делать это надо при помощи Java-кода.

В Java для обработки каких-либо событий как правило используют интерфейсы или (очень редко) абстрактные классы. Android — не исключение. Мы хотим обработать событие нажатия, и в этом нам поможет интерфейс OnClickListener.

Для начала нам нужно его реализовать в MainActivity. Для этого можно использовать два способа:

  • Реализовать интерфейс в нашей Activity.
  • Создать объект, реализующий интерфейс.

Пример первого способа:



Продолжение доступно на платных тарифах

А вместе с ним — проверка домашних заданий нашими менторами.

Это совсем недорого — всего от 440 ₽ в месяц!



ВЫБРАТЬ ТАРИФ



Вход

Войдите, чтобы пользоваться всеми преимуществами.
Это займёт всего пару секунд!

или