Эта кодовая лаборатория является частью курса Android Kotlin Fundamentals. Вы получите максимальную отдачу от этого курса, если будете последовательно работать с лабораториями кода. Все кодовые лаборатории курса перечислены на целевой странице кодовых лабораторий Android Kotlin Fundamentals .
Что вы уже должны знать
- Создание простого Android-приложения на Kotlin.
- Запуск приложения Android на эмуляторе или на устройстве.
- Основы
LinearLayout
. - Создание простого приложения, использующего
LinearLayout
иTextView
.
Что вы узнаете
- Как работать с
View
иViewGroup
. - Как упорядочить представления в
Activity
с помощьюLinearLayout.
- Как использовать
ScrollView
для отображения прокручиваемого содержимого. - Как изменить видимость
View
. - Как создавать и использовать ресурсы строк и измерений.
- Как создать линейный макет с помощью редактора макетов Android Studio.
Что ты будешь делать
- Создайте приложение «Обо мне».
- Добавьте
TextView
в макет для отображения вашего имени. - Добавьте изображение
ImageView.
- Добавьте
ScrollView
для отображения прокручиваемого текста.
В приложении «Обо мне» вы можете продемонстрировать интересные факты о себе или настроить приложение для друга, члена семьи или домашнего животного. Это приложение отображает имя, кнопку « ГОТОВО », звездочку и некоторый прокручиваемый текст.
В этой задаче вы создадите проект AboutMe Android Studio.
- Откройте Android Studio, если она еще не открыта.
- Если проект уже открыт в Android Studio, выберите File > New > New Project .
- Если проект еще не открыт, выберите + Начать новый проект Android Studio в диалоговом окне « Добро пожаловать в Android Studio ».
- В диалоговом окне « Создать новый проект » на вкладке « Телефон и планшет » выберите шаблон « Пустая активность ». Нажмите «Далее» .
- В следующем диалоговом окне Create New Project задайте следующие параметры и нажмите Finish .
Атрибут | Ценность |
Имя приложения | Обо мне |
Название компании андроид | |
Сохранить местоположение | Оставьте расположение по умолчанию или измените его на предпочитаемый вами каталог. |
Язык | Котлин |
Минимальный уровень API | API 19: Android 4.4 (КитКат) |
Этот проект будет поддерживать мгновенные приложения | Оставьте этот флажок снятым. |
Используйте артефакты AndroidX | Установите этот флажок. |
Android Studio потребуется некоторое время для создания файлов проекта.
- Запустите свое приложение. Вы увидите строку «Hello World» на пустом экране.
Шаблон Empty Activity создает одно пустое действие Mainactivity.kt
. Шаблон также создает файл макета с именем activity_main.xml
. Файл макета имеет ConstraintLayout
в качестве корневой ViewGroup
и имеет один TextView
в качестве содержимого.
В этой задаче вы измените сгенерированную корневую ViewGroup
на LinearLayout
. Вы также размещаете элементы пользовательского интерфейса вертикально.
Просмотр групп
ViewGroup
— это представление, которое может содержать дочерние представления, являющиеся другими представлениями и группами представлений. Представления, составляющие макет, организованы как иерархия представлений с группой представлений в качестве корня.
В группе представлений LinearLayout
элементы пользовательского интерфейса располагаются горизонтально или вертикально.
Измените корневой макет, чтобы он использовал группу представлений LinearLayout
:
- Выберите панель Проект > Android . В
app/res/layout
папку, откройте файлactivity_main.xml
. - Выберите вкладку Text и измените группу корневого представления с
ConstraintLayout
наLinearLayout
. - Удалите
TextView
. В элементеLinearLayout
добавьте атрибутandroid:orientation
и установите для него значениеvertical
.
До:
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
После:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
</LinearLayout>
Редактор макетов — это инструмент визуального дизайна внутри Android Studio. Вместо написания XML-кода вручную для создания макета приложения вы можете использовать редактор макетов для перетаскивания элементов пользовательского интерфейса в редактор дизайна.
Чтобы увидеть редактор макетов, щелкните вкладку « Дизайн ». На приведенном ниже снимке экрана показаны части редактора макетов.
Редактор дизайна : отображает визуальное представление вашего макета экрана в представлении дизайна, представлении схемы или в обоих режимах. Редактор дизайна является основной частью редактора макетов.
Панель инструментов: содержит кнопки для настройки внешнего вида вашего макета в редакторе дизайна и для изменения некоторых атрибутов макета. Например, чтобы изменить отображение вашего макета в редакторе дизайна, используйте кнопку « Выбрать область дизайна» . выпадающее меню:
- Используйте Design для предварительного просмотра вашего макета в реальном мире.
- Используйте Blueprint , чтобы увидеть только контуры для каждого вида.
- Используйте Design + Blueprint , чтобы увидеть оба дисплея рядом.
Палитра : содержит список представлений и групп представлений, которые можно перетащить в компоновку или на панель дерева компонентов .
Атрибуты : показывает атрибуты для текущего выбранного представления или группы представлений. Для переключения между полным списком атрибутов и часто используемыми атрибутами используйте кнопку значок в верхней части панели.
Дерево компонентов: отображает иерархию компоновки в виде дерева представлений. Дерево компонентов полезно, когда у вас есть маленькие, скрытые или перекрывающиеся представления, которые иначе нельзя было бы выбрать в редакторе проекта.
Шаг 1: добавьте TextView
- Откройте файл
res/layout/activity_main.xml
, если он еще не открыт. - Перейдите на вкладку « Текст ». и проверьте код. Код имеет
LinearLayout
в качестве корневой группы просмотра. ( Группы представлений — это представления, содержащие другие представления.)
LinearLayout
имеет обязательные атрибутыlayout_height
,layout_width
иorientation
, которая по умолчанию являетсяvertical
. - Перейдите на вкладку « Дизайн », чтобы открыть редактор макетов.
- Перетащите текстовое представление с панели « Палитра » в редактор дизайна.
- Обратите внимание на панель дерева компонентов . Новое текстовое представление размещается как дочерний элемент родительской группы представлений, которой является
LinearLayout
. - Откройте панель атрибутов , если она еще не открыта. (Чтобы открыть панель, дважды щелкните только что добавленный
TextView
в редакторе дизайна.) - Установите следующие атрибуты на панели Атрибуты :
Атрибут | Ценность |
Я БЫ | |
текст | Установите его на свое имя. (В одном из текстовых полей отображается значок гаечного ключа, указывающий, что это пространство имен |
Внешний вид текста > Размер текста | |
Внешний вид текста > Цвет текста | |
Внешний вид текста > Выравнивание текста | Центр |
Шаг 2: Создайте строковый ресурс
В дереве компонентов рядом с TextView,
вы увидите значок предупреждения. . Чтобы увидеть текст предупреждения, щелкните значок или наведите на него курсор, как показано на скриншоте ниже.
Чтобы устранить предупреждение, создайте строковый ресурс:
- На панели « Атрибуты » щелкните три точки рядом с текстовым атрибутом, который вы установили для своего имени. Откроется редактор ресурсов.
- В диалоговом окне « Ресурсы » выберите « Добавить новый ресурс» > «Новое строковое значение» .
- В диалоговом окне New String Value Resource установите в поле Имя ресурса значение
name
. Задайте в поле Значение ресурса свое имя. Нажмите ОК . Обратите внимание, что предупреждение исчезло. - Откройте файл
res/values/strings.xml
и найдите только что созданный строковый ресурс сname
.
<string name="name">Aleks Haecky</string>
Шаг 3. Создайте ресурс измерения
Вы только что добавили ресурс с помощью редактора ресурсов. Вы также можете извлекать ресурсы в редакторе кода XML для создания новых ресурсов:
- В файле
activity_main.xml
перейдите на вкладку « Текст ». - В строке
textSize
щелкните число (20sp
) и введитеAlt+Enter
(Option+Enter
на Mac). Выберите Извлечь ресурс измерения во всплывающем меню. - В диалоговом окне « Извлечь ресурс » введите
text_size
в поле « Имя ресурса ». Нажмите ОК . - Откройте файл
res/values/dimens.xml
, чтобы увидеть следующий сгенерированный код:
<dimen name="text_size">20sp</dimen>
- Откройте файл
MainActivity.kt
и найдите следующий код в конце функцииonCreate()
:
setContentView(R.layout.activity_main)
Функция setContentView()
соединяет файл макета с Activity
. Указанный файл ресурсов макета — R.layout.activity_main
:
-
R
— ссылка на ресурс. Это автоматически сгенерированный класс с определениями для всех ресурсов вашего приложения. -
layout.activity_main
указывает, что ресурс представляет собой макет с именемactivity_main
.
- Запустите свое приложение. Отображается
TextView
с вашим именем.
Когда вы смотрите на экран своего приложения, ваше имя выдвигается к верхней части экрана, поэтому теперь вы добавляете отступы и поля.
Отступ против поля
Отступы — это пространство внутри границ представления или элемента. Это пространство между краями представления и содержимым представления, как показано на рисунке ниже.
Размер представления включает его заполнение. Ниже приведены часто используемые атрибуты заполнения:
-
android:padding
указывает отступы для всех четырех краев представления. -
android:paddingTop
указывает отступ для верхнего края. -
android:paddingBottom
указывает отступ для нижнего края. -
android:paddingStart
указывает заполнение для «начального» края представления. -
android:paddingEnd
указывает заполнение для «конечного» края представления. -
android:paddingLeft
указывает отступ для левого края. -
android:paddingRight
указывает отступ для правого края.
Маржа — это пространство, добавляемое за пределы границ представления. Это пространство от края представления до его родителя, как показано на рисунке выше. Ниже приведены часто используемые атрибуты поля:
-
android:layout_margin
указывает поля для всех четырех сторон представления. -
android:layout_marginBottom
указывает пространство за пределами нижней части этого представления. -
android:layout_marginStart
указывает пространство за пределами «начальной» стороны этого представления. -
android:layout_marginEnd
указывает пространство в конце этого представления. -
android:layout_marginLeft
указывает пространство в левой части этого представления. -
android:layout_marginRight
указывает пространство справа от этого представления.
Шаг 1: Добавьте отступы
Чтобы поместить пробел между вашим именем и верхним краем текстового представления name
, добавьте верхний отступ.
- Откройте файл
activity_main.xml
на вкладке « Дизайн ». - В дереве компонентов или в редакторе дизайна щелкните текстовое представление, чтобы открыть его панель атрибутов .
- В верхней части панели атрибутов щелкните значок с двойной стрелкой чтобы увидеть все доступные атрибуты.
- Найдите Padding, разверните его и щелкните три точки ... рядом с верхним атрибутом. Появится диалоговое окно Ресурсы .
- В диалоговом окне « Ресурсы » выберите « Добавить новый ресурс» > «Новое значение измерения» .
- В диалоговом окне New Dimension Value Resource создайте новый
small_padding
dimen
значением8dp
.
Аббревиатура dp означает независимый от плотности . Если вы хотите, чтобы элемент пользовательского интерфейса выглядел одинакового размера на экранах с разной плотностью, используйте dp в качестве единицы измерения. Однако при указании размера текста всегда используйте sp (масштабируемые пиксели). - Нажмите ОК .
Шаг 2: Добавьте поле
Чтобы отодвинуть текстовое представление name
от края родительского элемента, добавьте верхнее поле.
- На панели атрибутов найдите «margin», чтобы найти Layout_Margin .
- Разверните Layout_Margin и щелкните три точки ... рядом с верхним атрибутом.
- Создайте новый
dimen
ресурс с именемlayout_margin
и сделайте его16dp
. Нажмите ОК .
Шаг 3: Добавьте шрифт
Чтобы текст name
выглядел лучше, используйте шрифт Android Roboto. Этот шрифт является частью библиотеки поддержки, и вы добавляете шрифт в качестве ресурса.
- На панели « Атрибуты » найдите «fontFamily».
- В поле fontFamily щелкните стрелку раскрывающегося списка , прокрутите список до конца и выберите Дополнительные шрифты .
- В диалоговом окне Resources найдите
rob
и выберите Roboto . В списке Предварительный просмотр выберите Обычный . - Выберите переключатель Добавить шрифт в проект .
- Нажмите ОК .
В папке res
теперь есть папка font
, содержащая файл шрифта roboto.ttf
. @font/roboto
добавляется в ваш TextView
.
Шаг 4: Извлеките стиль
Стиль — это набор атрибутов, определяющих внешний вид и формат представления. Стиль может включать цвет шрифта, размер шрифта, цвет фона, отступы, поля и другие общие атрибуты.
Вы можете извлечь форматирование текстового представления name
в стиль и повторно использовать стиль для любого количества представлений в вашем приложении. Повторное использование стиля придает вашему приложению единообразный вид при наличии нескольких представлений. Использование стилей также позволяет хранить эти общие атрибуты в одном месте.
- Щелкните правой кнопкой мыши
TextView
в дереве компонентов и выберите Refactor > Extract Style . - В диалоговом окне « Извлечение стиля Android» снимите флажки
layout_width
,layout_height
иtextAlignment
. Эти атрибуты обычно различны для каждого представления, поэтому вы не хотите, чтобы они были частью стиля. - В поле Имя стиля введите
NameStyle
. - Нажмите ОК .
- Стиль также является ресурсом, поэтому стиль сохраняется в папке
res/values/
вstyles.xml
. Откройтеstyles.xml
и изучите сгенерированный код стиляNameStyle
, который будет выглядеть примерно так:
<style name="NameStyle">
<item name="android:layout_marginTop">@dimen/layout_margin</item>
<item name="android:fontFamily">@font/roboto</item>
<item name="android:paddingTop">@dimen/small_padding</item>
<item name="android:textColor">@android:color/black</item>
<item name="android:textSize">@dimen/text_size</item>
</style>
- Откройте файл
activity_main.xml
и перейдите на вкладку « Текст ». Обратите внимание, что сгенерированный стиль используется в текстовом представлении какstyle="@style/NameStyle"
. - Запустите приложение и обратите внимание на изменения в шрифте и отступах вокруг вашего
TextView
.
Большинство реальных приложений для Android состоят из комбинации представлений для отображения изображений, отображения текста и приема ввода от пользователя в виде текста или событий щелчка. В этой задаче вы добавляете представление для отображения изображения.
ImageView
— это представление для отображения ресурсов изображений. Например, ImageView
может отображать ресурсы Bitmap
, такие как файлы PNG, JPG, GIF или WebP, или может отображать ресурс Drawable
, такой как векторный рисунок.
Существуют графические ресурсы, поставляемые с Android, такие как образцы значков, аватары и фоны. Вы добавите один из этих ресурсов в свое приложение.
- Отобразите файл компоновки. На вкладке « Дизайн » перетащите ImageView из панели « Палитра » ниже
name_text
в дереве компонентов. Откроется диалоговое окно Ресурсы . - Выберите Drawable , если он еще не выбран.
- Разверните android , прокрутите и выберите btn_star_big_on . Это желтая звезда .
- Нажмите ОК .
Изображение звезды добавляется в макет под вашим именем. Поскольку у вас есть вертикальныйLinearLayout
, добавляемые представления выравниваются по вертикали. - Перейдите на вкладку « Текст » и посмотрите на сгенерированный код
ImageView
. Для ширины установлено значениеmatch_parent
, поэтому представление будет таким же широким, как и его родительский элемент. Для высоты задано значениеwrap_content
, поэтому высота представления будет равна его содержимому.ImageView
ссылается наbtn_star_big_on
.
<ImageView
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:srcCompat="@android:drawable/btn_star_big_on" />
- Чтобы переименовать
id
ImageView
, щелкните правой кнопкой мыши"@+id/imageView"
и выберите Refactor > Rename . - В диалоговом окне « Переименовать » установите для
id
значение@+id/star_image
. Щелкните Рефакторинг .
- На вкладке « Проект » в дереве компонентов щелкните значок предупреждения рядом со
star_image
. Предупреждение об отсутствующемcontentDescription
, который средства чтения с экрана используют для описания изображений пользователю. - На панели Атрибуты щелкните три точки ... рядом с атрибутом
contentDescription
. Откроется диалоговое окно Ресурсы . - В диалоговом окне « Ресурсы » выберите « Добавить новый ресурс» > «Новое строковое значение» . Задайте для поля Имя ресурса значение
yellow_star
, а для поля Значение ресурса — значениеYellow star
. Нажмите ОК . - Используйте панель « Атрибуты », чтобы добавить верхнее поле размером
16dp
(то есть@dimen/layout_margin
) кyellow_star
, чтобы отделить изображение звезды от имени. - Запустите свое приложение. Ваше имя и изображение звезды отображаются в пользовательском интерфейсе вашего приложения.
ScrollView
— это группа представлений, которая позволяет прокручивать размещенную в ней иерархию представлений. Представление прокрутки может содержать только одно другое представление или группу представлений в качестве дочернего элемента. Дочернее представление обычно представляет собой LinearLayout
. Внутри LinearLayout
вы можете добавить другие представления.
На следующем изображении показан пример ScrollView
, который содержит LinearLayout
, содержащий несколько других представлений.
В этой задаче вы добавите ScrollView
, который позволит пользователю прокручивать текстовое представление, отображающее краткую биографию. Если вы делаете прокручиваемым только одно представление, вы можете поместить представление непосредственно в ScrollView
, что вы и делаете в этой задаче.
Шаг 1. Добавьте ScrollView, содержащий TextView
- Откройте файл
activity_main.xml
на вкладке « Дизайн ». - Перетащите вид прокрутки в компоновку, перетащив его в редактор дизайна или в дерево компонентов . Поместите вид прокрутки ниже изображения звезды.
- Переключитесь на вкладку « Текст », чтобы проверить сгенерированный код.
// Auto generated code
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" />
</ScrollView>
Высота и ширина ScrollView
соответствуют родительскому элементу. Как только текстовое представление name_text
и представление изображения star_image
используют достаточно вертикального пространства для отображения своего содержимого, система Android ScrollView
, чтобы заполнить оставшееся доступное пространство на экране.
- Добавьте
id
вScrollView
и назовите егоbio_scroll
. Добавлениеid
вScrollView
дает системе Android дескриптор представления, поэтому, когда пользователь поворачивает устройство, система сохраняет положение прокрутки. - Внутри
ScrollView
удалите кодLinearLayout
, потому что ваше приложение будет иметь только одно прокручиваемое представление —TextView
. - Перетащите
TextView
из палитры в дерево компонентов . ПоместитеTextView
подbio_scroll
как дочерний элементbio_scroll
. - Установите идентификатор нового текстового представления в
bio_text
. - Затем вы добавляете стиль для нового текстового представления. На панели « Атрибуты » щелкните три точки ... рядом с атрибутом стиля , чтобы открыть диалоговое окно « Ресурсы ».
- В диалоговом окне Ресурсы найдите
NameStyle
. ВыберитеNameStyle
из списка и нажмите OK . Текстовое представление теперь использует стильNameStyle
, который вы создали в предыдущей задаче.
Шаг 2. Добавьте свою биографию в новый TextView.
- Откройте
strings.xml
, создайте строковый ресурс с именемbio
и введите длинный текст о себе или о чем угодно.
Вот пример биографии:
<string name="bio">Hi, my name is Aleks.
\n\nI love fish.
\n\nThe kind that is alive and swims around in an aquarium or river, or a lake, and definitely the ocean.
\nFun fact is that I have several aquariums and also a river.
\n\nI like eating fish, too. Raw fish. Grilled fish. Smoked fish. Poached fish - not so much.
\nAnd sometimes I even go fishing.
\nAnd even less sometimes, I actually catch something.
\n\nOnce, when I was camping in Canada, and very hungry, I even caught a large salmon with my hands.
\n\nI\'ll be happy to teach you how to make your own aquarium.
\nYou should ask someone else about fishing, though.\n\n</string>
- В текстовом представлении
bio_text
задайте значение атрибутаtext
для ресурса строкиbio
, который содержит вашу биографию. - Чтобы текст
bio_text
легче читать, добавьте интервал между строками. Используйте атрибутlineSpacingMultiplier
и присвойте ему значение1.2
.
Обратите внимание, как в редакторе дизайна текстbio
доходит до боковых краев экрана. Чтобы решить эту проблему, вы можете добавить атрибуты левого, начального, правого и конечного заполнения к корневомуLinearLayout
. Вам не нужно добавлять нижний отступ, потому что текст, который идет до самого низа, сигнализирует пользователю, что текст можно прокручивать. - Добавьте начальное и конечное заполнение
16dp
в кореньLinearLayout
. - Перейдите на вкладку « Текст », извлеките ресурс измерения и назовите его
layout_padding
.
- Запустите приложение и прокрутите текст.
Поздравляем!
Вы создали полноценное приложение с нуля, и оно выглядит великолепно!
Проект Android Studio: Обо мне
Внутри ScrollView
добавьте ImageView
над TextView
. Когда вы запускаете приложение, это изображение, в отличие от звезды, прокручивается из поля зрения по мере прокрутки текста.
Подсказка: представление прокрутки может иметь только одно дочернее представление. Вы должны обернуть два прокручиваемых представления, ImageView
и TextView
, в LinearLayout
.
-
ViewGroup
— это представление, которое может содержать другие представления.LinearLayout
иScrollView
— это группы просмотра. -
LinearLayout
— это группа представлений, которая упорядочивает дочерние представления горизонтально или вертикально. - Используйте
ScrollView
, когда вам нужно отобразить содержимое на экране, например длинный текст или набор изображений. Представление прокрутки может содержать только одно дочернее представление. Если вы хотите прокручивать более одного представления, добавьтеViewGroup
, напримерLinearLayout
, вScrollView
и поместите представления для прокрутки внутри этойViewGroup
. - Редактор макетов — это редактор визуального дизайна внутри Android Studio. Вы можете использовать редактор макетов для создания макета вашего приложения, перетаскивая элементы пользовательского интерфейса в макет.
- Стиль — это набор атрибутов, определяющих внешний вид представления. Например, стиль может указывать цвет шрифта, размер шрифта, цвет фона, отступы и поля.
- Вы можете извлечь и собрать все форматирование представления в стиль. Чтобы придать вашему приложению единообразный вид, повторно используйте стиль для других представлений.
Удасити курс:
Документация для разработчиков Android:
В этом разделе перечислены возможные домашние задания для студентов, которые работают с этой кодовой лабораторией в рамках курса, проводимого инструктором. Инструктор должен сделать следующее:
- При необходимости задайте домашнее задание.
- Объясните учащимся, как сдавать домашние задания.
- Оценивайте домашние задания.
Преподаватели могут использовать эти предложения так мало или так часто, как они хотят, и должны свободно давать любые другие домашние задания, которые они считают подходящими.
Если вы работаете с этой кодовой лабораторией самостоятельно, не стесняйтесь использовать эти домашние задания, чтобы проверить свои знания.
Ответьте на эти вопросы
Вопрос 1
Что из перечисленного ниже является группой просмотра?
EditText
Редактировать текст
LinearLayout
TextView
Просмотр текста
▢ Button
вопрос 2
Какая из перечисленных ниже иерархий представлений недействительна?
▢ LinearLayout
> TextView
, TextView
, ImageView
▢ ScrollView
> LinearLayout
> TextView
, Button
, Button
, ScrollView
> TextView
▢ TextView
> TextView
, ImageView
, ScrollView
Вопрос 3
Стили — это ресурсы, определенные в styles.xml
. Используя стили, вы можете определить цвета, шрифты, размер текста и многие другие характеристики представления. Правда или ложь?
▢ Правда
▢ Ложь
Вопрос 4
ScrollView
— это группа представлений, которая может содержать любое количество представлений или групп представлений в качестве своих дочерних элементов. Правда или ложь?
▢ Правда
▢ Ложь
Вопрос 5
Какой элемент пользовательского интерфейса можно использовать для отображения изображений в вашем приложении?
TextView
Просмотр текста
ImageView
Изображение
▢ Button
ScrollView
Начать следующий урок:
Ссылки на другие лаборатории кода в этом курсе см. на целевой странице лаборатории кода Android Kotlin Fundamentals .