it-swarm.com.de

Navigationssymbol wird nicht angezeigt (Sherlock-Aktionsleiste)

Lassen Sie die Navigationsleiste mit der Sherlock-Aktionsleiste arbeiten, aber ich habe Probleme, das dreizeilige Symbol (wie Google Mail) anstelle der normalen Aufwärtsschaltfläche "<" anzuzeigen. Hier ist mein Code ic_drawer ist das dreizeilige Symbol, das Google Mail verwendet

getSupportActionBar().setIcon(R.drawable.myIcon);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setDisplayShowTitleEnabled(true);
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawer,
            R.drawable.ic_drawer, R.string.menu_open, R.string.menu_close) {
        public void onDrawerClosed(View view) {

            super.onDrawerClosed(view);
        }

        public void onDrawerOpened(View drawerView) {
            super.onDrawerOpened(drawerView);
        }
    };
19
user1634451

Diese Lösung funktionierte für mich und zeigte das Standard-Navigationssymbol in allen Versionen. Fügen Sie SherlockNavigationDrawer library von hier https://github.com/nicolasjafelle/SherlockNavigationDrawer zu Ihrem Projekt hinzu. Und ändern Sie Ihren Code wie folgt:

SherlockActionBarDrawerToggle mDrawerToggle = new SherlockActionBarDrawerToggle(this,mDrawerLayout,
   R.drawable.ic_drawer, R.string.drawer_open, R.string.drawer_close) {
   public void onDrawerClosed(View view) {
       super.onDrawerClosed(view);
   }
   public void onDrawerOpened(View drawerView) {
       super.onDrawerOpened(drawerView);
   }
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
getSupportActionBar().setIcon(R.drawable.ic_launcher);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowTitleEnabled(true);
21
Dory

Haben Sie versucht, die Methode zu implementieren:

    mDrawerToggle.syncState();

Das hat in der Vergangenheit für mich funktioniert.

40
wazim

Obwohl ich vermute, dass Sie es bereits ausgearbeitet haben, wollten Sie nur eine Antwort einreichen:

Ändern Sie Ihren Code wie folgt:

mDrawerToggle = new ActionBarDrawerToggle(this, mDrawer,
        R.drawable.ic_drawer, R.string.menu_open, R.string.menu_close) {
    public void onDrawerClosed(View view) {

        super.onDrawerClosed(view);
    }

    public void onDrawerOpened(View drawerView) {
        super.onDrawerOpened(drawerView);
    }
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
getSupportActionBar().setIcon(R.drawable.myIcon);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowTitleEnabled(true);

Grundsätzlich müssen die ActionBar-Optionen, die Sie im Code festlegen, erst nach Abschluss von DrawerToggle festgelegt werden.

3
Raveesh Bhalla

Sie können einen Stil wie den folgenden erstellen:

 <style name="AppTheme" parent="Your Theme name">
        <item name="homeAsUpIndicator">@drawable/ic_drawer</item>
 </style>

Und in Android Manifest wenden Sie dieses Thema wie folgt an:

<application
        Android:allowBackup="true"
        Android:icon="@drawable/ic_launcher"
        Android:label="@string/app_name"
        Android:theme="@style/AppTheme" >
</application>

Dadurch wird das Problem behoben, bei dem das dreizeilige Symbol sicher angezeigt wird.

2
user818455

Sie können sich zuerst this post ansehen. Es gibt eine Antwort: "Sie können das Symbol im Thema zurück ändern

<item name="Android:homeAsUpIndicator">@drawable/action_arrow</item>

Aber ich denke, Sie wollen Navigation Drawer implementieren , also lesen Sie darüber.

2
Borys

Haben Sie den Toggle zu Ihrer Schublade hinzugefügt?

mDrawerLayout.setDrawerListener(mDrawerToggle);
1
Benoit Duffez

Ich habe das eingegeben und es funktioniert.

    @Override
protected void onPostCreate(Bundle savedInstanceState) {
    super.onPostCreate(savedInstanceState);
    // Sync the toggle state after onRestoreInstanceState has occurred.
    mDrawerToggle.syncState();
}
0
zudo1337

Ich habe diese Zeile hinzugefügt, bevor ich setDrawerListener aufgerufen habe.

mDrawerLayout.post(new Runnable() {
@Override public void run() {
 mDrawerToggle.syncState();
}
});

Hoffe, dies behebt das Problem bei niedrigeren Geräten.

0
KiranKiki

Dies ist der Fall, wenn Sie Ihre App in Android <3 ausführen. Auch Google Apps leiden darunter.

Aber es gibt ein Projekt, um dieses Problem zu lösen: https://github.com/nicolasjafelle/SherlockNavigationDrawer

0
Daniel De León

@ zudo1337's Methode hat mein Problem gelöst.

@Override
protected void onPostCreate(Bundle savedInstanceState) {
    super.onPostCreate(savedInstanceState);
    // Sync the toggle state after onRestoreInstanceState has occurred.
    mDrawerToggle.syncState();
}
0
Bruce