android-actionbar заголовок - Навигационные режимы панели действий устарели в Android L




activity java (9)

Теперь, когда доступны документы Android 5.0, у нас есть официальная документация для виджета панели инструментов :

Стандартная панель инструментов для использования в содержимом приложения.

Панель инструментов представляет собой обобщение баров действий для использования в макетах приложений. Хотя панель действий традиционно является частью непрозрачного декоративного окна Activity, управляемого инфраструктурой, панель инструментов может быть размещена на любом произвольном уровне вложенности внутри иерархии представлений .

Виджет Toolbar также можно использовать для замены панели действий:

Приложение может выбрать назначение панели инструментов в качестве панели действий для Activity с помощью setActionBar() .

Отклонение вкладок в панели действий, скорее всего, связано с этим, поскольку панели инструментов не могут содержать вкладку.

Кроме того, он доступен для предыдущих версий Android через библиотеку appcompat. См. Это сообщение Криса Банеса для получения дополнительной информации. Выдержка:

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

Взглянув на отчет API diff для предварительного просмотра Android «L», я вижу, что все методы, связанные с режимами навигации в классе ActionBar (например, setNavigationMode() , addTab() , selectTab() , & c). теперь устарели.

Документация объясняет:

Режимы навигации панели действий устарели и не поддерживаются встроенными панелями действий панели инструментов. Вместо этого рассмотрите возможность использования других общих шаблонов навигации.

Какова предполагаемая замена?

Кроме того, является ли «встроенная панель инструментов панели инструментов» новой концепцией? Я не думаю, что слышал об этом раньше.


Я нашел эти руководства полезными при создании панели действий (теперь это «панель инструментов» - argh), которая поддерживает скользящие вкладки с Material Design:

https://www.youtube.com/watch?v=Fl0xMuo10yA

http://www.exoguru.com/android/material-design/navigation/android-sliding-tabs-with-material-design.html

Вам нужно синтезировать эти ресурсы в соответствии с вашей конкретной ситуацией. Например, вы не можете вручную создавать вкладки в том же стиле, что и в учебнике exoguru.com.


Я думаю, что подходящей заменой, когда у вас есть от трех до пяти экранов равной важности, является BottomNavigationActivity, это можно использовать для переключения фрагментов.

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

Учебник можно найти здесь: https://android.jlelse.eu/ultimate-guide-to-bottom-navigation-on-android-75e4efb8105f

Еще один качественный учебник можно найти на Android Hive здесь: https://www.androidhive.info/2017/12/android-working-with-bottom-navigation/


FragmentTabHost также является опцией.

Этот код находится на сайте разработчика Android:

/**
 * This demonstrates how you can implement switching between the tabs of a
 * TabHost through fragments, using FragmentTabHost.
 */
public class FragmentTabs extends FragmentActivity {
    private FragmentTabHost mTabHost;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.fragment_tabs);
    mTabHost = (FragmentTabHost)findViewById(android.R.id.tabhost);
    mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent);

    mTabHost.addTab(mTabHost.newTabSpec("simple").setIndicator("Simple"),
            FragmentStackSupport.CountingFragment.class, null);
    mTabHost.addTab(mTabHost.newTabSpec("contacts").setIndicator("Contacts"),
            LoaderCursorSupport.CursorLoaderListFragment.class, null);
    mTabHost.addTab(mTabHost.newTabSpec("custom").setIndicator("Custom"),
            LoaderCustomSupport.AppListFragment.class, null);
    mTabHost.addTab(mTabHost.newTabSpec("throttle").setIndicator("Throttle"),
            LoaderThrottleSupport.ThrottledLoaderListFragment.class, null);
    }
}

Хорошо для меня, чтобы обрабатывать устаревшую панель навигации с помощью панели инструментов v7 widget appcompat.

    setSupportActionBar(toolbar);
    getSupportActionBar().setSubtitle("Feed Detail");
    toolbar.setNavigationOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //goToWhere
        }
    });

У меня была та же проблема, и это решение мне очень понравилось:

В XML-файле макета, который содержит viewpager, добавьте PagerTabStrip, как показано:

<android.support.v4.view.PagerTabStrip
    android:id="@+id/pager_tab_strip"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="top"
    android:background="#996633"
    android:textColor="#CCCCCC"
    android:paddingTop="5dp"
    android:paddingBottom="5dp" />

Чтобы управлять заголовками страниц, добавьте оператор switch в файл ViewPager:

@Override
public CharSequence getPageTitle(int position)
{
    switch (position)
    {
    case 0:
        return "Page 1";

    case 1:
        return "Page 2";

    case 2:
        return "Page 3";

    }

    return null;
}

Для «замены» устаревших ActionBar я изменил тип переменных типа ActionBar на PagerTabStrip, как (старый код в комментарии):

// ActionBar bigActionBar;
PagerTabStrip bigActionBar;

«Замена» для ~ actionBar's .selectTab (tabindex) заключалась в использовании моего связанного метода .setCurrentItem (int) ViewPager, как это (старый код в комментарии):

/*
ActionBar.Tab eventTab = bigActionBar.getTabAt(2);
bigActionBar.selectTab(eventTab);
*/
mViewPager.setCurrentItem(2);

Надеюсь, это полезно.


Новая Toolbar не может использоваться для раздувания нескольких объектов линии, поэтому добавлять к ней вкладки невозможно.
Если вы хотите использовать Toolbar например TabWidget вы можете вставить в нее некоторые объекты Tab, но только со старым стилем Holo.

Here есть пользовательская библиотека, которая использует Toolbar V7, например TabWidget с новыми анимациями Material Design, но использует те же методы из старых ActionBar Tabs , поэтому вы можете прикрепить к ней ViewPager .


Смешное пасхальное яйцо.
В версии Ubuntu Chrome, в диспетчере задач ( shift + esc ), щелкнув правой кнопкой мыши, вы можете добавить научную колонку, которая в итальянской версии - «Capre Teletrasportate» (Teleported Goats).

Смешная теория об этом here .





android android-actionbar android-navigation android-5.0-lollipop