2015-07-06 25 views
6

devo un'attività con cassetto di navigazione e barra degli strumentiCambia azioneBarDrawerToggle icon android nella barra degli strumenti?

Attività

public class MainActivity extends AppCompatActivity { 
private Toolbar toolbar; 
private CustomTextViewMondaRegular tvTitle; 
private ListView mDrawerList; 
private DrawerLayout mDrawerLayout; 
private ActionBarDrawerToggle mDrawerToggle; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    toolbar = (Toolbar) findViewById(R.id.tool_bar); 
    setSupportActionBar(toolbar); 

    mDrawerList = (ListView) findViewById(R.id.left_drawer); 
    tvTitle = (CustomTextViewMondaRegular) findViewById(R.id.actionTitle); 
    tvTitle.setText(getIntent().getStringExtra("title")); 
    mDrawerList.setAdapter(new NavAdapter(getApplicationContext())); 
    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
    mDrawerList.setOnItemClickListener(new DrawerItemClickListener()); 

    mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,toolbar, 
      R.string.title_activity_main, R.string.title_activity_main) { 
     @Override 
     public void onDrawerClosed(View view) { 
      super.onDrawerClosed(view); 
      invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() 
     } 

     @Override 
     public void onDrawerOpened(View drawerView) { 
      super.onDrawerOpened(drawerView); 
      invalidateOptionsMenu(); 
      // creates call to onPrepareOptionsMenu() 
     } 
    }; 
    mDrawerLayout.setDrawerListener(mDrawerToggle); 
    if (savedInstanceState == null) { 

    } 
} 

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

public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 
    mDrawerToggle.onConfigurationChanged(newConfig); 
} 

private class DrawerItemClickListener implements ListView.OnItemClickListener { 
    @Override 
    public void onItemClick(AdapterView parent, View view, int position, long id) { 
     Logger.e("pos", position + ""); 
    } 
} 

}

XML Activity

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/drawer_layout" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
tools:context="com.vf.MainActivity"> 

<FrameLayout 
    android:id="@+id/frame_container" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 



    <android.support.v7.widget.Toolbar 
     android:id="@+id/tool_bar" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:background="@android:color/white" 
     android:elevation="3dp" 
     android:minHeight="?attr/actionBarSize" 
     android:theme="@style/MyDarkToolbarStyle"> 

     <TextView 
      android:id="@+id/actionTitle" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginEnd="5dp" 
      android:layout_marginRight="5dp" 
      android:drawableEnd="@drawable/logo" 
      android:drawableRight="@drawable/logo" 
      android:gravity="center" 
      android:text="XXXXXX" 
      android:textColor="#000000" 
      android:textSize="18sp" /> 

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

<ListView 
    android:id="@+id/left_drawer" 
    android:layout_width="240dp" 
    android:layout_height="match_parent" 
    android:layout_gravity="start" 
    android:background="@android:color/white" 
    android:choiceMode="singleChoice" 
    android:divider="#D8D8D8" /> 

L'icona ginocchiera attualmente mostra l'icona di default. Devo cambiare quell'icona. Come lo posso fare?

risposta

27

Per le persone che vengono in questo SO domanda in futuro,

Dobbiamo disabilitare indicatore cassetto

mDrawerToggle.setDrawerIndicatorEnabled(false); 

e quindi impostare ToolBar s' di navigazione pulsante

mToolbar.setNavigationIcon(R.drawable.navIcon); 

P.S. dopo di che dobbiamo impostare Navigation click listner sulla barra degli strumenti e aprire NavigationDrawer manualy. come mToolbar.setNavigationOnClickListener: D

1

È possibile impostare l'icona del menu utilizzando setHomeAsUpIndicator, passare un drawable a questo metodo.

See codice qui sotto:

ActionBar ab = getSupportActionBar(); 
    ab.setHomeAsUpIndicator(R.drawable.ic_menu); 
    ab.setDisplayHomeAsUpEnabled(true); 
+0

già cercato di non lavorare – WISHY

+0

provato e ha funzionato per me! Grazie! – CarlosT

7

Prova il codice qui sotto:

getSupportActionBar().setHomeButtonEnabled(true); 
getSupportActionBar().setDisplayHomeAsUpEnabled(true);  
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_menu_drawer); 
+0

Fresco. Questo funziona senza preoccuparsi di impostare gli ascoltatori per l'apertura manuale. Grazie – Alon

Problemi correlati