Navigation Schublade ( menudrawer ) Android 5 ( Lutscher ) Stil

? adek @ | Original: StackOverFlow

Ich bin mit menudrawer Bibliothek in meinem Projekt ( diese: https://github.com/SimonVT/android-menudrawer ) .

Ich aktualisiere meine app mit API21 ( Android 5 Lutscher ) und Material Design kompatibel zu sein. Wenn Sie diese Bibliothek mit API21 menudrawer verwenden Symbol sieht schlecht aus .

Ich möchte Sie Übergang in die neue Play Store (new menudrawer Symbol Übergang Pfeil ) sehen zu erzielen.

Navigation Schublade ( menudrawer ) Android 5 ( Lutscher ) Stil

Was ist der beste Weg, das zu tun? Ist es möglich, mit dieser Bibliothek ? Die einzige Lösung, ich bin im Moment denken, ist kundenspezifische Zeichenfläche . Aber vielleicht kann ich nativen Zeichenfläche einen Weg benutzen?

Top 5 Antwort

1adek @

OK. Ich verbrachte einige Stunden mit neuen API und ich denke, das Beste für mich werden wird Umschreiben meiner Schublade aus lib native DrawerLayout .

Aber vielleicht nützlich für jemanden mit ähnlichen Problem. Ich habe Testprojekt mit DrawerLayout (-> Neues Projekt mit menudrawer Android Studio) erstellt.

Und dann sah ich das gleiche Problem. Falsche Symbol. Wenn Sie Lust Animation und gute icon for Android 5.0 sehen wollen sicherstellen, dass Sie verwenden:

import android.support.**v7**.app.ActionBarDrawerToggle;

Achten Sie auf v7 . Standardmäßig Fragment Klasse hat v4 Import und dann werden Sie nicht sehen gute Symbol.

Eine andere Sache . Nach dem Wechsel in v7 müssen Sie den neuen Konstruktor beheben ActionBarDrawerToggle Funktion . Und das ist es. Sie werden neue Schublade Symbol.

2nirav kalola @

Erstens, stellen Sie sicher, dass Sie neuesten SDK zu aktualisieren. Neues Projekt erstellen im Android Studio, dann fügen Sie appcompat - v7.21.0 . + Und appcompat - v4.21.0 . + Bibliotheken in Ihrem buid.gradle als gradle Abhängigkeit.

compile 'com.android.support:appcompat-v7:21.0.2'
compile 'com.android.support:support-v4:21.0.2'

Fügen primaryColor und primarycolorDark in Ihrem color.xml Datei.

<resources>
<color name="primaryColor">#2196F3</color>
<color name="primaryColorDark">#0D47A1</color>
</resources>

Fügen Schublade öffnen / schließen String-Wert in Ihrem strings.xml Datei.

<resources>
<string name="app_name">Lollipop Drawer</string>
<string name="action_settings">Settings</string>
<string name="drawer_open">open</string>
<string name="drawer_close">close</string>
</resources>

Ihre activity_my.xml Layout -Datei sieht so aus:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent"
tools:context=".MainActivity">

<include layout="@layout/toolbar" />


<android.support.v4.widget.DrawerLayout
    android:layout_width="match_parent"
    android:id="@+id/drawerLayout"
    android:layout_height="match_parent">

    <!-- activity view -->
    <RelativeLayout
        android:layout_width="match_parent"
        android:background="#fff"
        android:layout_height="match_parent">

        <TextView
            android:layout_centerInParent="true"
            android:layout_width="wrap_content"
            android:textColor="#000"
            android:text="Activity Content"
            android:layout_height="wrap_content" />
    </RelativeLayout>

    <!-- navigation drawer -->
    <RelativeLayout
        android:layout_gravity="left|start"
        android:layout_width="match_parent"
        android:background="#fff"
        android:layout_height="match_parent">

        <ListView
            android:id="@+id/left_drawer"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:divider="#eee"
            android:background="#fff"
            android:dividerHeight="1dp" />
    </RelativeLayout>

</android.support.v4.widget.DrawerLayout>

</LinearLayout>

Ihre toolbar.xml Layout -Datei sieht so aus:

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

</android.support.v7.widget.Toolbar>

Ihre MyActivity.java sieht so aus: Hier Ihre Tätigkeit muss sich ActionBarActivity und stellen Sie Ihre Symbolleiste Unterstützung Aktionsleiste .

import android.content.res.Configuration;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class MyActivity extends ActionBarActivity {

private Toolbar toolbar;
private DrawerLayout drawerLayout;
private ActionBarDrawerToggle drawerToggle;
private ListView leftDrawerList;
private ArrayAdapter<String> navigationDrawerAdapter;
private String[] leftSliderData = {"Home", "Android", "Sitemap", "About", "Contact Me"};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_my);
    nitView();
    if (toolbar != null) {
        toolbar.setTitle("Navigation Drawer");
        setSupportActionBar(toolbar);
    }
    initDrawer();
}

private void nitView() {
    leftDrawerList = (ListView) findViewById(R.id.left_drawer);
    toolbar = (Toolbar) findViewById(R.id.toolbar);
    drawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);
    navigationDrawerAdapter=new ArrayAdapter<String>( MyActivity.this, android.R.layout.simple_list_item_1, leftSliderData);
    leftDrawerList.setAdapter(navigationDrawerAdapter);
}

private void initDrawer() {

    drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.drawer_open, R.string.drawer_close) {

        @Override
        public void onDrawerClosed(View drawerView) {
            super.onDrawerClosed(drawerView);

        }

        @Override
        public void onDrawerOpened(View drawerView) {
            super.onDrawerOpened(drawerView);

        }
    };
    drawerLayout.setDrawerListener(drawerToggle);
}

@Override
protected void onPostCreate(Bundle savedInstanceState) {
    super.onPostCreate(savedInstanceState);
    drawerToggle.syncState();
}

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    drawerToggle.onConfigurationChanged(newConfig);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.my, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        return true;
    }
    if (drawerToggle.onOptionsItemSelected(item)) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}
}

Erstelle style.xml Datei in Werte -21 Ordner für Android Lutscher

<?xml version="1.0" encoding="utf-8"?>
<resources>

<style name="myAppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/primaryColor</item>
    <item name="colorPrimaryDark">@color/primaryColorDark</item>
    <item name="android:statusBarColor">@color/primaryColorDark</item>

    <item name="drawerArrowStyle">@style/DrawerArrowStyle</item>
</style>

<style name="DrawerArrowStyle" parent="Widget.AppCompat.DrawerArrowToggle">
    <item name="spinBars">true</item>
    <item name="color">@android:color/black</item>
</style>

</resources>

Erstellen Sie Ihren style.xml Datei in Werte Ordner für ältere Versionen dann android Lutscher

<resources>

<style name="myAppTheme" parent="Theme.AppCompat.Light">
    <item name="colorPrimary">@color/primaryColor</item>
    <item name="colorPrimaryDark">@color/primaryColorDark</item>
    <item name="android:windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
    <item name="drawerArrowStyle">@style/DrawerArrowStyle</item>
</style>

<style name="DrawerArrowStyle" parent="Widget.AppCompat.DrawerArrowToggle">
    <item name="spinBars">true</item>
    <item name="color">@android:color/black</item>
</style>

</resources>

Ihre AndroidManifest.xml ist wie folgt aussieht:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="nkdroid.com.lollipopdrawer" >

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/myAppTheme" >
    <activity
        android:name=".MyActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

</manifest>

Nur als Referenz : http://www.nkdroid.com/2014/11/Android-Lollipop-Navigation-Drawer-Example-Using-Appcompat-21.html : Sie können komplette Quelltext hier herunterladen

3azetaguionbajo @

Android 5.0 Navigation Schublade Stil mit Animated hamburger :  https://github.com/03lafaye/LollipopDrawerToggle

Ich habe die meisten der als Antwort auf diese Frage veröffentlicht Code geprüft und nichts davon ist so klar, wie diese .