Android 5.0 для навигации по дизайну для KitKat

Я вижу, что Android представил новые значки навигационного ящика, значок ящика и значок со стрелкой назад. Как мы можем использовать это в приложениях, поддерживаемых Kitkat. См. Последнюю версию приложения Google для новостей Google, в которой содержатся последние значки навигационных ящиков и анимации. Как мы можем это реализовать?

Я попытался установить minSDK на 19 и complileSDK до 21, но он использует старые значки стиля. Это самореализация?

Вам нужно использовать новую панель инструментов в appcompat v21 и новый ActionBarDrawerToggle который также находится в этой библиотеке.

Добавьте зависимость gradle к вашему файлу gradle:

 compile 'com.android.support:appcompat-v7:21.0.0' 

Ваш макет activity_main.xml будет выглядеть примерно так:

 <!--I use android:fitsSystemWindows because I am changing the color of the statusbar as well--> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/main_parent_view" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:fitsSystemWindows="true"> <include layout="@layout/toolbar"/> <android.support.v4.widget.DrawerLayout android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <!-- Main layout --> <FrameLayout android:id="@+id/main_fragment_container" android:layout_width="match_parent" android:layout_height="match_parent" /> <!-- Nav drawer --> <fragment android:id="@+id/fragment_drawer" android:name="com.example.packagename.DrawerFragment" android:layout_width="@dimen/drawer_width" android:layout_height="match_parent" android:layout_gravity="left|start" /> </android.support.v4.widget.DrawerLayout> </LinearLayout> 

Ваш макет панели инструментов будет выглядеть примерно так:

 <?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/toolbar" app:theme="@style/ThemeOverlay.AppCompat.ActionBar" android:layout_width="match_parent" android:layout_height="wrap_content" android:minHeight="?attr/actionBarSize" android:background="?attr/colorPrimary"/> 

Ваша деятельность должна продлеваться:

 ActionBarActivity 

Когда вы найдете свои представления (ящик и панель инструментов) в действии, установите панель инструментов в качестве панели действий поддержки и установите setDrawerListener:

 setSupportActionBar(mToolbar); mDrawerToggle= new ActionBarDrawerToggle(this, mDrawerLayout,mToolbar, R.string.app_name, R.string.app_name); mDrawerLayout.setDrawerListener(mDrawerToggle); 

После этого вам просто нужно позаботиться о элементах меню и состоянии drawerToogle:

  @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = new MenuInflater(this); inflater.inflate(R.menu.menu_main,menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { if (mDrawerToggle.onOptionsItemSelected(item)) { return true; } return super.onOptionsItemSelected(item); } @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); mDrawerToggle.syncState(); } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); mDrawerToggle.onConfigurationChanged(newConfig); } @Override public void onBackPressed() { if(mDrawerLayout.isDrawerOpen(Gravity.START|Gravity.LEFT)){ mDrawerLayout.closeDrawers(); return; } super.onBackPressed(); } 

Реализация такая же, как и до панели инструментов, и вы получаете бесплатную анимацию стрелок. Нет головных болей. Для получения дополнительной информации следуйте:

  • Документация .

  • Сообщение ChrisBanes

  • Официальное сообщение в блоге Android .

Если вы хотите отобразить ящик на панели инструментов и в строке состояния, обратитесь к этому вопросу .

EDIT: используйте NavigationView из библиотеки дизайна поддержки. Учебник, чтобы узнать, как использовать здесь: http://antonioleiva.com/navigation-view/

Ответ больше не полезен. Оставляя его здесь только для исторической цели, поскольку время публикации Android не было реализовано 🙂


Сейчас есть много библиотек, которые могут это сделать.

Выбор 1 – https://github.com/neokree/MaterialNavigationDrawer

другие

Если вы хотите, чтобы реальный навигационный ящик с стилем дизайна материала (определенный здесь )
Я реализовал пользовательскую библиотеку, которая делает именно это.
Вы можете найти его здесь

Поддержка верхнего комментария вместе с новым созданным макетом main_content. Я просто переопределяю включенную компоновку содержимого с помощью DrawerLayout. Имейте в виду, что ваш drawerlayout должен иметь это layout_behavior: appbar_scrolling_view_behavior

Макет верхнего контейнера https://github.com/juanmendez/jm_android_dev/blob/master/01.fragments/06.fragments_with_rx/app/src/main/res/layout/activity_recycler.xml#L17

Включен макет содержания https://github.com/juanmendez/jm_android_dev/blob/master/01.fragments/06.fragments_with_rx/app/src/main/res/layout/content_recycler.xml#L9

См. Ящик навигации !!