Эта практическая работа входит в курс «Основы Android Kotlin». Вы получите максимальную пользу от этого курса, если будете выполнять практические работы последовательно. Все практические работы курса перечислены на целевой странице практической работы «Основы Android Kotlin» .
Что вам уже следует знать
- Создание простого приложения для Android на Kotlin.
- Запуск приложения Android на эмуляторе или на устройстве.
- Основы
LinearLayout
. - Создание простого приложения, использующего
LinearLayout
иTextView
.
Чему вы научитесь
- Как работать с
View
иViewGroup
. - Как упорядочить представления в
Activity
с помощьюLinearLayout.
- Как использовать
ScrollView
для отображения прокручиваемого содержимого. - Как изменить видимость
View
. - Как создавать и использовать строковые и размерные ресурсы.
- Как создать линейный макет с помощью редактора макетов Android Studio.
Что ты будешь делать?
- Создайте приложение AboutMe.
- Добавьте
TextView
в макет для отображения вашего имени. - Добавьте
ImageView.
- Добавьте
ScrollView
для отображения прокручиваемого текста.
В приложении AboutMe вы можете поделиться интересными фактами о себе или настроить приложение для друга, члена семьи или домашнего животного. В приложении отображается имя, кнопка «ГОТОВО» , изображение звёздочки и прокручиваемый текст.
В этом задании вы создадите проект AboutMe Android Studio.
- Откройте Android Studio, если он еще не открыт.
- Если проект уже открыт в Android Studio, выберите Файл > Создать > Новый проект .
- Если проект еще не открыт, выберите + Начать новый проект Android Studio в диалоговом окне Добро пожаловать в Android Studio .
- В диалоговом окне «Создать новый проект» на вкладке «Телефон и планшет» выберите шаблон «Пустая активность» . Нажмите «Далее» .
- В следующем диалоговом окне «Создать новый проект» задайте следующие параметры и нажмите «Готово» .
Атрибут | Ценить |
Имя приложения | Обо мне |
Название компании Android | |
Сохранить местоположение | Оставьте местоположение по умолчанию или измените его на предпочитаемый вами каталог. |
Язык | Котлин |
Минимальный уровень API | API 19: Android 4.4 (KitKat) |
Этот проект будет поддерживать мгновенные приложения | Оставьте этот флажок снятым. |
Использовать артефакты AndroidX | Установите этот флажок. |
Android Studio потребуется некоторое время для генерации файлов проекта.
- Запустите приложение. На пустом экране вы увидите строку «Hello World».
Шаблон Empty Activity создаёт одну пустую активность Mainactivity.kt
. Шаблон также создаёт файл макета activity_main.xml
. Корневым элементом ViewGroup
файла макета является ConstraintLayout
, а его содержимым является один TextView
.
В этой задаче вы измените сгенерированную корневую ViewGroup
на LinearLayout
. Вы также расположите элементы пользовательского интерфейса вертикально.
Просмотреть группы
ViewGroup
— это представление, которое может содержать дочерние представления, то есть другие представления и группы представлений. Представления, составляющие макет, организованы в виде иерархии представлений с корнем в виде группы представлений.
В группе представлений LinearLayout
элементы пользовательского интерфейса располагаются либо горизонтально, либо вертикально.
Измените корневой макет так, чтобы он использовал группу представлений LinearLayout
:
- Выберите панель «Проект» > «Android» . В папке
app/res/layout
В папке откройте файлactivity_main.xml
. - Выберите вкладку Текст и измените корневую группу представлений с
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
в редакторе дизайна.) - Задайте следующие атрибуты на панели «Атрибуты» :
Атрибут | Ценить |
ИДЕНТИФИКАТОР | |
текст | Введите своё имя. (В одном из текстовых полей отображается значок гаечного ключа, указывающий на то, что оно относится к пространству имён |
textAppearance > textSize | |
textAppearance > textColor | |
textAppearance > textAlignment | Центр |
Шаг 2: Создание строкового ресурса
В дереве компонентов , рядом с TextView,
вы увидите значок предупреждения. . Чтобы увидеть текст предупреждения, щелкните значок или наведите на него указатель мыши, как показано на снимке экрана ниже.
Чтобы устранить предупреждение, создайте строковый ресурс:
- На панели «Атрибуты» нажмите на три точки рядом с атрибутом текста , который вы установили для своего имени. Откроется редактор ресурсов.
- В диалоговом окне Ресурсы выберите Добавить новый ресурс > Новое строковое значение .
- В диалоговом окне «Новый ресурс строкового значения» в поле «Имя ресурса» укажите значение «
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
задает отступ для правого края.
Отступ (Margin) — это пространство, добавляемое за пределы границ представления. Это расстояние от края представления до его родительского элемента, как показано на рисунке выше. Ниже приведены часто используемые атрибуты отступа:
-
android:layout_margin
задает отступ для всех четырех сторон представления. -
android:layout_marginBottom
определяет пространство за пределами нижней стороны этого представления. -
android:layout_marginStart
определяет пространство за пределами «начальной» стороны этого представления. -
android:layout_marginEnd
определяет пространство на конечной стороне этого представления. -
android:layout_marginLeft
определяет пространство с левой стороны этого представления. -
android:layout_marginRight
определяет пространство с правой стороны этого представления.
Шаг 1: Добавьте отступы
Чтобы оставить пространство между вашим именем и верхним краем текстового поля name
, добавьте верхний отступ.
- Откройте файл
activity_main.xml
на вкладке «Дизайн» . - В дереве компонентов или в редакторе дизайна щелкните текстовое представление, чтобы открыть панель его атрибутов .
- В верхней части панели «Атрибуты» щелкните значок двойной стрелки.
чтобы увидеть все доступные атрибуты.
- Найдите параметр «Padding», разверните его и нажмите на три точки ... рядом с верхним атрибутом. Откроется диалоговое окно « Ресурсы» .
- В диалоговом окне Ресурсы выберите Добавить новый ресурс > Новое значение измерения .
- В диалоговом окне «Ресурс нового значения измерения» создайте новый ресурс
dimen
с именемsmall_padding
и значением8dp
.
Аббревиатура dp расшифровывается как «density-independent» (независимый от плотности ). Если вы хотите, чтобы элемент пользовательского интерфейса выглядел одинаково на экранах с разной плотностью, используйте dp в качестве единицы измерения. Однако при указании размера текста всегда используйте sp (масштабируемые пиксели). - Нажмите ОК .
Шаг 2: Добавьте поле
Чтобы отодвинуть текст name
от края родительского элемента, добавьте верхнее поле.
- На панели «Атрибуты» найдите «margin», чтобы найти Layout_Margin .
- Разверните Layout_Margin и щелкните три точки ... рядом с верхним атрибутом.
- Создайте новый
dimen
ресурс с именемlayout_margin
и установите его значение16dp
. Нажмите кнопку «ОК» .
Шаг 3: Добавьте шрифт
Чтобы улучшить отображение текста name
, используйте шрифт Android Roboto. Этот шрифт входит в библиотеку поддержки и добавляется как ресурс.
- На панели «Атрибуты» найдите «fontFamily».
- В поле fontFamily щелкните стрелку раскрывающегося списка , прокрутите список до конца и выберите Дополнительные шрифты .
- В диалоговом окне «Ресурсы» найдите
rob
и выберите Roboto . В списке «Предварительный просмотр» выберите Regular . - Установите переключатель в положение Добавить шрифт в проект .
- Нажмите ОК .
В папке res
теперь есть папка font
, содержащая файл шрифта roboto.ttf
. Атрибут @font/roboto
добавлен в ваш TextView
.
Шаг 4: Извлеките стиль
Стиль — это набор атрибутов, определяющих внешний вид и формат представления. Стиль может включать цвет и размер шрифта, цвет фона, отступы, поля и другие общие атрибуты.
Вы можете извлечь форматирование текстового представления name
в стиль и использовать его повторно для любого количества представлений в вашем приложении. Повторное использование стиля обеспечивает единообразный внешний вид вашего приложения при наличии нескольких представлений. Использование стилей также позволяет хранить эти общие атрибуты в одном месте.
- Щелкните правой кнопкой мыши
TextView
в дереве компонентов и выберите Рефакторинг > Извлечь стиль . - В диалоговом окне «Извлечь стиль 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"
и выберите Рефакторинг > Переименовать . - В диалоговом окне «Переименовать» установите
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
из списка и нажмите кнопку «ОК» . В текстовом представлении теперь используется стиль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
доходит до самых боковых краев экрана. Чтобы решить эту проблему, можно добавить атрибуты padding left, start, right и end к корневомуLinearLayout
. Добавлять нижний отступ не нужно, поскольку текст, доходящий до самого низа, сигнализирует пользователю о том, что его можно прокручивать. - Добавьте начальный и конечный отступ
16dp
к корневомуLinearLayout
. - Перейдите на вкладку Текст , извлеките ресурс размера и назовите его
layout_padding
.
- Запустите приложение и прокрутите текст.
Поздравляю!
Вы создали полноценное приложение с нуля, и оно выглядит великолепно!
Проект Android Studio: AboutMe
Внутри ScrollView
добавьте ImageView
над TextView
. При запуске приложения это изображение, в отличие от звёздочки, прокручивается по мере прокрутки текста вверх.
Подсказка: у прокручиваемого представления может быть только одно дочернее представление. Вам необходимо обернуть два прокручиваемых представления, ImageView
и TextView
, в LinearLayout
.
-
ViewGroup
— это представление, которое может содержать другие представления.LinearLayout
иScrollView
— это группы представлений. -
LinearLayout
— это группа представлений, которая располагает свои дочерние представления горизонтально или вертикально. - Используйте
ScrollView
, когда вам нужно отобразить контент на экране, например, длинный текст или коллекцию изображений. Прокручиваемое представление может содержать только одно дочернее представление. Если вы хотите прокручивать несколько представлений, добавьтеViewGroup
, напримерLinearLayout
, кScrollView
и поместите прокручиваемые представления внутрь этойViewGroup
. - Редактор макетов — это визуальный редактор дизайна в Android Studio. Вы можете использовать его для создания макета приложения, перетаскивая элементы пользовательского интерфейса в макет.
- Стиль — это набор атрибутов, определяющих внешний вид представления. Например, стиль может определять цвет и размер шрифта, цвет фона, отступы и поля.
- Вы можете извлечь и объединить всё форматирование представления в стиль. Чтобы придать приложению единообразный вид, используйте этот стиль повторно для других представлений.
Курс Udacity:
Документация для разработчиков 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 .