2017-01-19 8 views
1

新しいアプリを書いています。私はdrawerLayoutのアイコンを一般的な3水平線に変更したいと思います。私がそれをクリックすると、Iconは彼の見た目を矢印に変えるはずです。今私はいつも矢印アイコンを持っている。左上隅に3行のアイコンを追加する方法Android DrawerLayout

How should It looks like when drawer is closed

How should It looks like when drawer is opened

パッケージpl.nieruchalski.scrumfamily。

import android.app.Activity; 
import android.content.res.Configuration; 
import android.os.PersistableBundle; 
import android.support.v4.widget.DrawerLayout; 
import android.support.v7.app.ActionBarDrawerToggle; 
import android.os.Bundle; 
import android.view.MenuItem; 
import android.view.View; 

public class MainActivity extends Activity { 

    private ActionBarDrawerToggle drawerToggle; 
    private DrawerLayout drawerLayout; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     drawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout); 
     drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, R.string.openDrawer, R.string.closeDrawer); 
     drawerLayout.addDrawerListener(drawerToggle); 
     getActionBar().setDisplayHomeAsUpEnabled(true); 
     getActionBar().setHomeButtonEnabled(true); 
    } 

    @Override 
    public void onPostCreate(Bundle savedInstanceState, PersistableBundle persistentState) { 
     super.onPostCreate(savedInstanceState, persistentState); 
     drawerToggle.syncState(); 
    } 

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

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     if(drawerToggle.onOptionsItemSelected(item)) 
      return true; 
     return super.onOptionsItemSelected(item); 
    } 
} 
+0

https://stackoverflow.com/questions/30594992/the-3-line-icon-for-a-hamburger-menu-isnt-appearing –

答えて

0

あなたは間違っonPostCreate()メソッドをオーバーライドしているので、drawerToggle.syncState();が呼ばれることは決してありません、とトグルがActionBarに独自のアイコンを置くことはありません。

onPostCreate()メソッドは、Bundleパラメータのみでオーバーライドする必要があります。 no PersistableBundleパラメータ。

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

onCreate()でこれを試してみてください。

getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
    getSupportActionBar().setDefaultDisplayHomeAsUpEnabled(false); 
    drawerToggle.setDrawerIndicatorEnabled(false); 
    drawerToggle.setHomeAsUpIndicator(R.drawable.ic_custom_drawer_icon); //set your horizontal line icon 
    drawerToggle.setToolbarNavigationClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      DrawerLayout drawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout); 
      if (drawerLayout.isDrawerOpen(GravityCompat.START)) { 
       drawerLayout.closeDrawer(GravityCompat.START); 
       drawerToggle.setHomeAsUpIndicator(R.drawable.ic_custom_drawer_icon); // drawer closed-reset icon 
      } else { 
       //open drawer 
       drawerLayout.openDrawer(GravityCompat.START); 
       drawerToggle.setHomeAsUpIndicator(R.drawable.ic_new_icon); // set your back icon 
      } 
     } 
    }); 
関連する問題