it-swarm.com.ru

Панель инструментов Android для API 19? (для API 21 работает нормально)

Я использовал Как я могу использовать DrawerLayout для отображения на панели инструментов/панели инструментов и под строкой состояния? ответ Suyash (я также добавил панель инструментов, может быть, неправильно), чтобы поместить Navigation Drawer поверх «панели действий».

Для API уровня 21 вместо «панели действий» я использовал панель инструментов, и она отлично работает.

Но для API 19 это не работает:

    if(Build.VERSION.SDK_INT > 19) {
      final Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar);
        setSupportActionBar(toolbar);
    }

У вас есть идея, как я могу поместить NavigationDrawer поверх «панели действий» (или панели инструментов) для уровня API 19?

8
tauri

Если вы используете панель инструментов, вы сможете просматривать точно такую ​​же панель инструментов в любом API.

Для этого у вас должен быть XML в res/layout:

<Android.support.v7.widget.Toolbar
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:background="?attr/colorPrimary"
    Android:minHeight="?attr/actionBarSize"/>

И в ваш основной макет вы должны включить его:

<include
    Android:id="@+id/app_bar"
    layout="@layout/app_bar" />

Также вы должны установить свой стиль как No Action Bar на вашем styles.xml

<style name="AppTheme.Base" parent="Theme.AppCompat.NoActionBar">
    <item name="colorPrimary">@color/primary</item>
    <item name="colorPrimaryDark">@color/primaryDark</item>
    <item name="colorAccent">@color/accent</item>
</style>

Но для API 21 у вас должен быть другой файл styles.xml:

<style name="AppTheme" parent="AppTheme.Base">
    <item name="Android:colorPrimary">@color/primary</item>
    <item name="Android:colorPrimaryDark">@color/primaryDark</item>
    <item name="Android:colorAccent">@color/accent</item>
</style>

И, наконец, в вашей основной деятельности

toolbar = (Toolbar) findViewById(R.id.app_bar);
setSupportActionBar(toolbar);

И, наконец, к любой вещи, которую вы хотите сделать с панелью инструментов, получите ее и обработайте как старую панель действий:

getSupportActionBar().setHomeAsUpEnabled(true);
7
Joaquin Iurchuk

Дизайн материала для устройств перед леденцом на палочке:

Все ваши темы (которые хотят Панель действий/Панель инструментов) должны наследовать от Theme.AppCompat. Доступны варианты, включая Light и NoActionBar. 

Когда надувать что-либо нужно отображать на действии панель (например, SpinnerAdapter для навигации по списку на панели инструментов), убедитесь, что вы используете тематический контекст панели действий, полученный с помощью getSupportActionBar (). getThemedContext ().


Библиотека поддержки Android 22.1:

AppCompat позволяет вам использовать Android: тему для панелей инструментов (не рекомендуется Приложение: тема использовалась ранее) и, что еще лучше, приносит Android: тема поддержка всех представлений на устройствах API 11+.

4
Amit Vaghela