Как вы могли заметить в промо видео данного модуля, в конце у нас должно получиться два экрана: экран с детальной информацией о пользователе и его твитах и экран поиска и выбора другого пользователя. Мы предлагаем вам, с нашей помощью, самостоятельно создавать второй экран приложения. Параллельно с темами, детально рассматриваемыми на примере первого экрана, мы будем предлагать вам практические задания аналогичного характера для второго экрана.
Создание файла user_item_view.xml
Вот как будет выглядеть элемент списка на экране поиска пользователей.
Нам с вами необходимо сделать упрощённую версию:
Давайте посмотрим на наш рисунок. Видим, что на нём расположен ImageView и два TextView. Стоит отметить, что TextView должны быть в общем контейнере, чтобы можно было их отцентрировать относительно ImageView.
Вот как выглядит экран, разбитый на структурные элементы:
Вам необходимо создать user_item_view. Причём сделать его нужно, используя как LinearLayout, так и RelativeLayout в качестве коренного элемента. Учтите, что в двух вариантах для вертикального центрирования текстов элементы TextView будут обёрнуты в ещё один контейнер.
Используя знания предыдущих уроков попробуйте создать данный layout сперва используя RelativeLayout, а затем LinearLayout.
Очень важно, чтобы вы попробовали сделать это задание самостоятельно. Конечно же, ниже будет представлено решение, но перед этим хорошенько потрудитесь сами.
Реализация с помощью RelativeLayout:
Вот как выглядит вариант без вертикального центрирования текстов:
Создание макета toolbar_search_user, используя RelativeLayout
Давайте сделаем ещё один небольшой пример. Для экрана поиска пользователей нам надо создать следующий layout:
Выглядит он слишком стильно. Мы так пока делать не будем. Давайте сделаем более простой вариант:
Создадим новый файл в папке res->layouttoolbar_search_user.xml.
Слева у нас должен быть расположен EditText – компонент для ввода текста. Он должен занимать всё свободное пространство по горизонтали (для свойства ширины layout_width надо задать значение match_parent), но он должен быть слева от кнопки. Кнопка занимает фиксированную ширину, но при этом должна прижаться к правому краю RelativeLayout. Начинать всегда надо с того элемента, у которого ширина или высота фиксированы. Поэтому начнём с кнопки. Надо добавить к ней атрибут android:layout_alignParentEnd="true". Этот атрибут как бы говорит кнопке, указывая ее расположение по горизонтали: находись у правого края от RelativeLayout, в котором ты находишься.
Теперь расположим наш EditText. Он занимает позицию по умолчанию, никакие зависимости добавлять не нужно. Необходимо только указать, что он должен занимать всю ширину, но при этом не перекрывать кнопку.
Для этого зададим ему атрибут android:layout_width="match_parent" для того, чтобы он занимал всю ширину. Теперь задаём ему зависимость, чтобы он находился слева от кнопки. Добавим атрибут android:layout_toStartOf="@+id/search_button". Для наглядности также добавим ему отступ справа.
По поводу высоты данного макета пока задумываться не будем, разберёмся с этим в месте его применения. Сейчас поставим, например, 100dp.
Сейчас, когда мы с вами обсудили вариант создания данного макета, попробуйте его написать самостоятельно.
В атрибуте отвечающее за отображение текста android:text="Поиск" мы указали текст напрямую.
В рабочем проекте так никогда не делают, а указывают текст при помощи текстовых ресурсов. Это сделано только для иллюстрации текста в Preview.
В элементе EditText мы использовали атрибут android:hint="Введите имя" (рус.подсказка). Он используется для того, чтобы отображать подсказку в поле ввода текста до того, как пользователь введёт какой-либо текст.
Отлично! Мы справились с заданием.
В результате данного практического занятия мы создали элементы user_item_view, toolbar_search_user, которые успешно применим по месту назначения в следующих уроках.
Сайт использует cookie-файлы для того, чтобы вам было удобнее им пользоваться. Для
продолжения работы с сайтом, вам необходимо принять использование cookie-файлов.
Код начала урока:
gitzip
Структура урока:
Видео версия урока
Как вы могли заметить в промо видео данного модуля, в конце у нас должно получиться два экрана: экран с детальной информацией о пользователе и его твитах и экран поиска и выбора другого пользователя. Мы предлагаем вам, с нашей помощью, самостоятельно создавать второй экран приложения. Параллельно с темами, детально рассматриваемыми на примере первого экрана, мы будем предлагать вам практические задания аналогичного характера для второго экрана.
Создание файла user_item_view.xml
Вот как будет выглядеть элемент списка на экране поиска пользователей.
Нам с вами необходимо сделать упрощённую версию:
Давайте посмотрим на наш рисунок. Видим, что на нём расположен
ImageView
и дваTextView
. Стоит отметить, чтоTextView
должны быть в общем контейнере, чтобы можно было их отцентрировать относительноImageView
.Вот как выглядит экран, разбитый на структурные элементы:
Вам необходимо создать
user_item_view
. Причём сделать его нужно, используя какLinearLayout
, так иRelativeLayout
в качестве коренного элемента. Учтите, что в двух вариантах для вертикального центрирования текстов элементыTextView
будут обёрнуты в ещё один контейнер.Используя знания предыдущих уроков попробуйте создать данный
layout
сперва используяRelativeLayout
, а затемLinearLayout
.Очень важно, чтобы вы попробовали сделать это задание самостоятельно. Конечно же, ниже будет представлено решение, но перед этим хорошенько потрудитесь сами.
Реализация с помощью RelativeLayout:
Вот как выглядит вариант без вертикального центрирования текстов:
user_item_view.xml
Для центрирования нам необходимо добавить
LinearLayout
, которому необходимо указать атрибутcenterVertical="true"
, обернуть в него два нашихTextView
:user_item_view.xml
Реализация с помощью LinearLayout
Реализация с помощью контейнера
LinearLayout
выглядит более элегантно:user_item_view.xml
Этот вариант и оставим.
Создание макета toolbar_search_user, используя RelativeLayout
Давайте сделаем ещё один небольшой пример. Для экрана поиска пользователей нам надо создать следующий
layout
:Выглядит он слишком стильно. Мы так пока делать не будем. Давайте сделаем более простой вариант:
Создадим новый файл в папке
res->layout
toolbar_search_user.xml
.Слева у нас должен быть расположен
EditText
– компонент для ввода текста. Он должен занимать всё свободное пространство по горизонтали (для свойства шириныlayout_width
надо задать значениеmatch_parent
), но он должен быть слева от кнопки. Кнопка занимает фиксированную ширину, но при этом должна прижаться к правому краюRelativeLayout.
Начинать всегда надо с того элемента, у которого ширина или высота фиксированы. Поэтому начнём с кнопки. Надо добавить к ней атрибутandroid:layout_alignParentEnd="true"
. Этот атрибут как бы говорит кнопке, указывая ее расположение по горизонтали: находись у правого края отRelativeLayout
, в котором ты находишься.Теперь расположим наш
EditText
. Он занимает позицию по умолчанию, никакие зависимости добавлять не нужно. Необходимо только указать, что он должен занимать всю ширину, но при этом не перекрывать кнопку.Для этого зададим ему атрибут
android:layout_width="match_parent"
для того, чтобы он занимал всю ширину. Теперь задаём ему зависимость, чтобы он находился слева от кнопки. Добавим атрибутandroid:layout_toStartOf="@+id/search_button"
. Для наглядности также добавим ему отступ справа.По поводу высоты данного макета пока задумываться не будем, разберёмся с этим в месте его применения. Сейчас поставим, например,
100dp
.Сейчас, когда мы с вами обсудили вариант создания данного макета, попробуйте его написать самостоятельно.
toolbar_search_user.xml
В атрибуте отвечающее за отображение текста
android:text="Поиск"
мы указали текст напрямую.В рабочем проекте так никогда не делают, а указывают текст при помощи текстовых ресурсов. Это сделано только для иллюстрации текста в
Preview
.В элементе
EditText
мы использовали атрибутandroid:hint="Введите имя"
(рус.подсказка). Он используется для того, чтобы отображать подсказку в поле ввода текста до того, как пользователь введёт какой-либо текст.Отлично! Мы справились с заданием.
В результате данного практического занятия мы создали элементы
user_item_view
,toolbar_search_user
, которые успешно применим по месту назначения в следующих уроках.Полный листинг изменений кода:
Code diff