TextView

Для простого виведення тексту на екран використовується елемент TextView. Він просто відображає текст без можливості його редагування.

Основні атрибути

  • android:text: встановлює текст елемента.
  • android:textSize: задає розмір тексту. Одиницями вимірювання є sp (scale-independent pixels).
  • android:background: задає фоновий колір елемента у вигляді шестнадцяткового коду кольору або через ресурс кольору.
  • android:textColor: задає колір тексту.
  • android:textAllCaps: якщо значення true, всі символи тексту стають великими.
  • android:textDirection: встановлює напрямок тексту. За замовчуванням напрямок — зліва направо (ltr), але можна встановити справа наліво (rtl).
  • android:textAlignment: задає вирівнювання тексту.

Можливі значення android:textAlignment

  • center: вирівнювання по центру.
  • textStart: вирівнювання по лівому краю.
  • textEnd: вирівнювання по правому краю.
  • viewStart: при напрямку тексту зліва направо — вирівнювання по лівому краю; справа наліво — по правому.
  • viewEnd: при напрямку тексту зліва направо — вирівнювання по правому краю; справа наліво — по лівому.

Типи шрифтів (android:fontFamily)

Можна встановити наступні шрифти:

  • monospace
  • serif
  • serif-monospace
  • sans-serif
  • sans-serif-condensed
  • sans-serif-smallcaps
  • sans-serif-light
  • casual
  • cursive

Наприклад, визначимо три текстових поля:

<?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"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
 
    <TextView
        android:layout_height="wrap_content"
        android:layout_width="0dp"
        android:layout_margin="10dp"
 
        android:text="Hello Android "
        android:fontFamily="sans-serif"
        android:textSize="26sp"
        android:background="#ffebee"
        android:textColor="#f44336"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintRight_toRightOf="parent"/>
    <TextView
        android:layout_height="wrap_content"
        android:layout_width="0dp"
        android:layout_margin="10dp"
 
        android:text="Hello Java"
        android:textAllCaps="true"
        android:textSize="26sp"
        android:background="#ede7f6"
        android:textColor="#7e57c2"
 
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintRight_toRightOf="parent"/>
 
    <TextView
        android:layout_height="wrap_content"
        android:layout_width="0dp"
        android:layout_margin="10dp"
 
        android:text="Hello World"
        android:textAlignment="textEnd"
        android:textSize="26sp"
        android:background="#e8eaf6"
        android:textColor="#5c6bc0"
         
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintRight_toRightOf="parent"/>
 
</androidx.constraintlayout.widget.ConstraintLayout>

Встановлення елемента в коді теж не відрізняється складністю. Наприклад, створимо елемент і виведемо його на екран:

package com.example.viewapp;
 
import androidx.appcompat.app.AppCompatActivity;
import androidx.constraintlayout.widget.ConstraintLayout;
 
import android.graphics.Typeface;
import android.os.Bundle;
import android.widget.TextView;
 
public class MainActivity extends AppCompatActivity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 
        ConstraintLayout constraintLayout = new ConstraintLayout(this);
        TextView textView = new TextView(this);
        textView.setBackgroundColor(0xffe8eaf6);
        textView.setTextColor(0xff5c6bc0);
        textView.setAllCaps(true);
        textView.setTextAlignment(TextView.TEXT_ALIGNMENT_CENTER);
        textView.setText("Hello Android!");
        textView.setTypeface(Typeface.create("casual", Typeface.NORMAL));
        textView.setTextSize(26);
 
        ConstraintLayout.LayoutParams layoutParams = new ConstraintLayout.LayoutParams
                (ConstraintLayout.LayoutParams.WRAP_CONTENT, ConstraintLayout.LayoutParams.WRAP_CONTENT);
        layoutParams.leftToLeft = ConstraintLayout.LayoutParams.PARENT_ID;
        layoutParams.topToTop = ConstraintLayout.LayoutParams.PARENT_ID;
        textView.setLayoutParams(layoutParams);
 
        constraintLayout.addView(textView);
        setContentView(constraintLayout);
    }
}

Іноді необхідно вивести на екран якесь посилання або телефон, після натискання на які здійснювалася б певна дія. Для цього в TextView визначено атрибут android:autoLink:

<TextView
    android:text="Посетите сайт https://metanit.com"
    android:textSize="21sp"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:autoLink="web|email"
     
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintTop_toTopOf="parent"/>

Атрибут android:autoLink дозволяє автоматично розпізнавати та активувати різні типи посилань у тексті. Він може приймати наступні значення:

  • none: вимикає всі посилання.
  • web: активує всі веб-посилання.
  • email: активує посилання на електронні адреси.
  • phone: активує посилання на номери телефонів.
  • map: активує посилання на карту.
  • all: активує всі вищезгадані типи посилань.

Тобто при налаштуванні android:autoLink="web" якщо в тексті є згадка адреси url, то ця адреса буде виділятися, а під час натискання на неї буде здійснено перехід до веббраузера, який відкриє сторінку за цією адресою. За допомогою прямої риски ми можемо об'єднувати умови, як у цьому випадку: android:autoLink="web|email"