Настройка панели приложения

Попробуйте Compose
Jetpack Compose – это рекомендуемый набор инструментов для создания пользовательского интерфейса в Android. Узнайте, как добавлять компоненты в Compose.

В простейшем случае на панели действий с одной стороны отображается название действия, а с другой – дополнительное меню. Даже в таком простом виде панель приложения предоставляет пользователям полезную информацию и обеспечивает единообразный внешний вид приложений Android.

Изображение, показывающее панель приложения в приложении Now in Android
Рисунок 1. Панель приложения со значком действия в приложении Now in Android.

Во всех действиях, использующих тему по умолчанию, в качестве панели приложения используется ActionBar. Функции панели приложения добавляются в нативный элемент ActionBar в разных выпусках Android. В результате нативная функция ActionBar работает по-разному в зависимости от версии Android на устройстве.

С другой стороны, функции добавляются в версию Toolbar библиотеки AndroidX AppCompat, а значит, они доступны на устройствах, использующих библиотеки AndroidX.

Поэтому для реализации панелей приложения в действиях используйте класс Toolbar библиотеки AndroidX. Использование панели инструментов библиотеки AndroidX обеспечивает согласованное поведение приложения на самых разных устройствах.

Как добавить панель инструментов в Activity

Ниже описано, как настроить Toolbar в качестве панели приложения.
  1. Добавьте в проект библиотеку AndroidX, как описано в обзоре AndroidX.
  2. Убедитесь, что действие расширяет AppCompatActivity:

    Kotlin

    class MyActivity : AppCompatActivity() {
      // ...
    }

    Java

    public class MyActivity extends AppCompatActivity {
      // ...
    }
  3. В манифесте приложения настройте элемент <application> так, чтобы он использовал одну из тем NoActionBar AppCompat, как показано в примере ниже. При использовании одной из этих тем приложение не сможет использовать нативный класс ActionBar для предоставления панели приложения.
    <application
        android:theme="@style/Theme.AppCompat.Light.NoActionBar"
        />
  4. Добавьте элемент Toolbar в шаблон объекта activity. Например, следующий код макета добавляет Toolbar и создает видимость того, что он парит над действием:
    <androidx.appcompat.widget.Toolbar
       android:id="@+id/my_toolbar"
       android:layout_width="match_parent"
       android:layout_height="?attr/actionBarSize"
       android:background="?attr/colorPrimary"
       android:elevation="4dp"
       android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
       app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>

    Рекомендации по высоте панели приложения можно найти в спецификации Material Design.

    Поместите панель инструментов в верхнюю часть макета действия, поскольку вы используете ее в качестве панели приложения.

  5. В методе onCreate() объекта activity вызовите метод setSupportActionBar() и передайте панель инструментов объекта activity, как показано в примере ниже. Этот метод устанавливает панель инструментов в качестве панели приложения для действия.

    Kotlin

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_my)
        // The Toolbar defined in the layout has the id "my_toolbar".
        setSupportActionBar(findViewById(R.id.my_toolbar))
    }

    Java

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my);
        Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar);
        setSupportActionBar(myToolbar);
    }

Теперь в вашем приложении есть базовая панель действий. По умолчанию панель действий содержит название приложения и дополнительное меню, в котором изначально есть пункт Настройки. Вы можете добавить на панель действий и в дополнительное меню другие действия, как описано в статье Добавление и обработка действий.

Как использовать служебные методы панели приложения

После того как вы установите панель инструментов в качестве панели приложения, вы получите доступ к служебным методам, предоставляемым классом ActionBar библиотеки AndroidX. Этот подход позволяет делать полезные вещи, например скрывать и показывать панель приложения.

Чтобы использовать служебные методы ActionBar, вызовите метод getSupportActionBar(). Этот метод возвращает ссылку на объект AppCompat ActionBar. Получив ссылку, вы можете вызвать любой из методов ActionBar, чтобы настроить панель приложения. Например, чтобы скрыть панель приложения, вызовите ActionBar.hide().