Учебник по панели инструментов Android — XML-макет и Kotlin
Виджет панели инструментов Android используется для создания меню в приложениях. Мы узнаем, как создать панель инструментов, используя макет XML и код Kotlin. Мы реализуем различные свойства панели инструментов в примере приложения для Android.
Что такое панель инструментов Android?
Виджет панели инструментов Android обычно находится в верхней части экрана. Название приложения, логотип, значок навигации и строка меню отображаются внутри панели инструментов. Панель инструментов является заменой старого и устаревшего ActionBar в материальном дизайне.
Зависимости панели инструментов Gradle
Панель инструментов доступна со следующей зависимостью.
implementation 'com.android.support:appcompat-v7:27.1.0'
Панель инструментов Android может поставляться либо из тем, либо из макета.
Панель инструментов приложений Android по умолчанию
Панель инструментов из тем
Тема DarkActionBar по умолчанию добавляет панель инструментов вверху приложения. Мы можем изменить родительскую тему на изображении выше с Theme.AppCompat.Light.DarkActionBar
на Theme.AppCompat.Light.NoActionBar
, чтобы удалить панель инструментов, которая отображается как часть темы деятельности. Давайте изменим тему и добавим панель инструментов в файл activity_main.xml.
XML-макет панели инструментов
Мы добавили панель инструментов в наш файл макета activity_main.xml, используя следующий код.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<android.support.v7.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
Это отобразит прозрачную панель инструментов без текста или каких-либо других элементов. Мы должны добавить больше свойств, чтобы эффективно использовать панель инструментов.
1. Настройка цвета фона панели инструментов
Мы должны добавить следующий XML-атрибут в наш тег панели инструментов для цвета фона.
android:background="@color/colorPrimary"
2. Установка темы
Мы можем установить тему панели инструментов, используя следующий код.
android:theme="@style/ThemeOverlay.AppCompat.Dark"
Мы используем тему по умолчанию для макета. Темный означает, что цвета текста будут светлыми (обычно белыми). Мы также можем создавать собственные темы в файле styles.xml
.
3. Настройка заголовка, подзаголовка, значков
- Название:
app:title=Панель инструментов Android
- Подзаголовок:
app:subtitle=Sub
- Логотип:
app:logo=@android:drawable/ic_menu_call
- Значок навигации:
app:navigationIcon=@drawable/ic_menu_black_24dp
4. Предварительный просмотр панели инструментов
Существует множество XML-атрибутов для настройки свойств панели инструментов. Например: titleTextColor, subtitleTextColor, subtitleTextAppearance, titleTextAppearance и т. д.
Темы панели инструментов Android
Мы можем создавать собственные стили и назначать их в качестве темы на панели инструментов. Это будет намного проще, чем добавлять все эти свойства XML.
<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="toolbarStyle">@style/ToolBarStyle</item>
</style>
<style name="ToolBarStyle" parent="Widget.AppCompat.Toolbar">
<item name="android:background">#EA8D8D</item>
<item name="titleTextAppearance">@style/TitleTextAppearance</item>
<item name="subtitleTextAppearance">@style/SubTitleTextAppearance</item>
</style>
<style name="TitleTextAppearance" parent="TextAppearance.Widget.AppCompat.Toolbar.Title">
<item name="android:textSize">18sp</item>
<item name="android:textColor">#38ADAE</item>
</style>
<style name="SubTitleTextAppearance" parent="TextAppearance.Widget.AppCompat.Toolbar.Subtitle">
<item name="android:textSize">14sp</item>
<item name="android:textColor">#00B7FF</item>
</style>
</resources>
Давайте используем пользовательскую тему в файле activity_main.xml.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:orientation="vertical"
tools:context=".MainActivity">
<android.support.v7.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:subtitle="Sub"
app:title="AndroidlyToolbar" />
</LinearLayout>
Пользовательская панель инструментов Android
Мы можем определить наши собственные представления внутри панели инструментов. Следующий макет определяет настраиваемые представления на панели инструментов.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:orientation="vertical"
tools:context=".MainActivity">
<android.support.v7.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:subtitle="Sub"
app:title="AndroidlyToolbar">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:text="Text" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:src="@drawable/ic_menu_black_24dp" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:text="BUTTON" />
</RelativeLayout>
</android.support.v7.widget.Toolbar>
</LinearLayout>
Создание панели инструментов с использованием кода Kotlin
Мы можем создавать панели инструментов программно, используя код Kotlin. Каждое из свойств XML панели инструментов имеет свои эквивалентные методы Kotlin. Следующий класс MainActivity.kt определен ниже.
package net.androidly.androidlytoolbar
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.support.v4.content.ContextCompat
import android.support.v7.widget.Toolbar
import android.widget.Toast
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val toolbar = findViewById(R.id.toolbar) as Toolbar?
setSupportActionBar(toolbar)
toolbar?.title = "Androidly"
toolbar?.subtitle = "Sub"
toolbar?.navigationIcon = ContextCompat.getDrawable(this,R.drawable.ic_menu_black_24dp)
toolbar?.setNavigationOnClickListener { Toast.makeText(applicationContext,"Navigation icon was clicked",Toast.LENGTH_SHORT).show() }
}
}
Используя оператор as
, мы безопасно приводим XML-представление к экземпляру панели инструментов. setNavigationOnClickListener
запускает всплывающее сообщение при щелчке значка навигации в меню.
Вы можете загрузить проект панели инструментов по следующей ссылке: AndroidlyToolbar