Текстовый виджет TextView без сомнения можно назвать наиболее часто используемым виджетом. Это первый элемент View, с которым, как правило, знакомятся начинающие android-разработчики. При создании нового проекта в Android Studio мы видим базовый layout с одним элементом TextView.
Вот пример такого layout-a:
<RelativeLayout 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:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <TextView android:text="@string/hello_world" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </RelativeLayout>
В данном примере элемент TextView имеет также несколько атрибутов:
- android:text — позволяет задать текст. Здесь мы используем ссылку на строковый ресурс.
- android:layout_width — задает ширину элемента. Значение wrap_content означает, что ширина должна соответствовать ширине текстового содержимого
- android:layout_height — задает высоту элемента. Аналогично ширине, высота в данном примере соответствует «высоте контента», то есть размеру шрифта + небольшие отступы.
TextView может иметь и другие атрибуты. Рассмотрим наиболее часто используемые:
- android:id — id элемента (уникальный идентификатор) виджета
- android:layout_marginLeft — отступ от элемент слева
- android:layout_marginRight — отступ от элемента справа
- android:paddingLeft — внутренний отступ слева
- android:paddingRight — внутренний отступ справа
- android:gravity — центрирование внутри элемента. Обычно применяется, если, например, ширина элемента имеет значение match_parent. Подробнее про атрибут gravity можно почитать в статье Свойства android:gravity и android:layout_gravity
Вот как может выглядеть использование всех этих атрибутов:
<TextView android:id="@+id/txtV" android:layout_marginLeft="5dp" android:layout_marginRight="5dp" android:paddingLeft="5dp" android:paddingRight="5dp" android:gravity="center" android:text="@string/hello_world" android:layout_width="match_parent" android:layout_height="wrap_content" />
Мы получим вот такую картинку:
Мы можем добавлять в TextView текст программно. Для этого используется метод setText(). Пример:
package ru.androiddocs.textviewexample; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.widget.TextView; public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView txtV = (TextView) findViewById(R.id.txtV); txtV.setText(R.string.new_text); } }
R.string.new_text — это идентификатор строкового ресурса из res/values/strings.xml, который мы хотим добавить.
Также мы можем выводить в TextView текст с html-тегами