Je vois qu'Android a introduit de nouvelles icônes de tiroir de navigation, icône de tiroir et icône de flèche vers l'arrière. Comment pouvons-nous utiliser cela dans les applications supportées par KitKat? Consultez la dernière version de Google de l'application Kiosque, qui contient les dernières icônes et animations de tiroirs de navigation. Comment pouvons-nous mettre cela en œuvre?
J'ai essayé de régler minSDK à 19 et complileSDK à 21, mais il utilise les anciennes icônes de style. Est-ce auto-implémenté?
Vous devez utiliser la nouvelle barre d'outils dans appcompat v21 et la nouvelle variable ActionBarDrawerToggle
également présente dans cette bibliothèque.
Ajoutez la dépendance gradle à votre fichier gradle:
compile 'com.Android.support:appcompat-v7:21.0.0'
Votre disposition activity_main.xml
ressemblerait à quelque chose comme ça:
<!--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>
La disposition de votre barre d’outils ressemblerait à quelque chose comme ça:
<?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"/>
Votre activité doit s'étendre de:
ActionBarActivity
Lorsque vous trouvez vos vues (tiroir et barre d’outils) dans l’activité, définissez la barre d’outils comme barre d’assistance et définissez setDrawerListener:
setSupportActionBar(mToolbar);
mDrawerToggle= new ActionBarDrawerToggle(this, mDrawerLayout,mToolbar, R.string.app_name, R.string.app_name);
mDrawerLayout.setDrawerListener(mDrawerToggle);
Après cela, il vous suffit de vous occuper des éléments de menu et de l'état DrawToogle:
@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();
}
La mise en œuvre est la même qu’elle était avant la barre d’outils et vous recevez gratuitement l’animation flèche. Pas de maux de tête. Pour plus d'informations, suivez:
Si vous souhaitez afficher le tiroir au-dessus de la barre d’outils et sous la barre d’état, veuillez vous référer à cette question .
EDIT: Utilisez NavigationView depuis la bibliothèque de conception. Tutoriel pour apprendre à utiliser ici: http://antonioleiva.com/navigation-view/
Beaucoup de bibliothèques peuvent maintenant atteindre cet objectif.
Choix 1 - https://github.com/neokree/MaterialNavigationDrawer
Autres
Prise en charge des commentaires principaux avec la nouvelle présentation générée de main_content. Je remplace simplement la disposition de contenu incluse par DrawerLayout. Gardez à l'esprit que votre tiroir doit avoir ce layout_behavior: appbar_scrolling_view_behavior
structure du conteneur supérieur https://github.com/juanmendez/jm_Android_dev/blob/master/01.fragments/06.fragments_with_rx/app/src/main/res/layout/activity_recycler.xml#L17