studio personalizar from fragments con activity android drawerlayout

personalizar - Android DrawerLayout no muestra el icono del indicador correcto



navigationview (4)

Estoy tratando de usar el nuevo DrawerLayout para una lista. El problema es que aunque configuré el detector de cajón, el indicador en la barra de acción sigue siendo el ícono de flecha en lugar del ícono de 3 líneas que pretendo dibujar. La siguiente es la función OnCreate:

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_front_page); // Swiping Pager set up mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager()); mViewPager = (ViewPager) findViewById(R.id.pager); mViewPager.setAdapter(mSectionsPagerAdapter); // Sliding Drawer set up mHabitContract = new HabitsContract(this); mDrawerLayout = (DrawerLayout) findViewById(R.id.front_page_layout); mDrawerList = (ListView) findViewById(R.id.habit_list); mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START); mDrawerList.setAdapter(new HabitAdapter(mHabitContract.GetHabitItems(), this)); // Fixme: Indicator image doesn''t show up mDrawerToggle = new ActionBarDrawerToggle( this, /* host Activity */ mDrawerLayout, /* DrawerLayout object */ R.drawable.ic_navigation_drawer, /* nav drawer image to replace ''Up'' caret */ R.string.drawer_open, /* "open drawer" description for accessibility */ R.string.drawer_close /* "close drawer" description for accessibility */ ) { public void onDrawerClosed(View view) { //getActionBar().setTitle(mTitle); invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() } public void onDrawerOpened(View drawerView) { //getActionBar().setTitle(mDrawerTitle); invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() } }; mDrawerLayout.setDrawerListener(mDrawerToggle); // Action Bar set up getActionBar().setDisplayHomeAsUpEnabled(true); getActionBar().setHomeButtonEnabled(true); getActionBar().setDisplayShowHomeEnabled(true); }

¿Alguien puede ayudar?

Actualización: he encontrado el problema. Agregué la función onPostCreate de la siguiente manera, y ahora está funcionando.

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



Para aquellos que están buscando esto o vinieron aquí en busca de una respuesta: deben usar DrawerToggle support.v7. Siguiendo como lo uso:

drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, R.string.drawer_opened, R.string.drawer_closed){ public void onDrawerClosed(View view){ //actionBar.setTitle(mTitle); invalidateOptionsMenu(); // crea la llamada para onPrepareOptionsMenu } public void onDrawerOpened(View view){ //actionBar.setTitle(mDrawerTitle); invalidateOptionsMenu(); // crea la llamda para onPrepareOptionsMenu } };

Esto funciona bien y tiene una animación que mola!


También verifique cuidadosamente si el tema ActionBar personalizado está definido en su proyecto en el archivo style.xml con la condición android:displayOptions=showTitle . Me gusta esto:

<style name="OrangeBar" parent="@android:style/Widget.Holo.ActionBar"> <item name="android:displayOptions">showTitle</item> ... </style>

y puede estropear el indicador del cajón. Para evitar esto, agregue showHome en android:displayOptions :

<item name="android:displayOptions">showHome|showTitle</item>


syncState() llamada syncState() de su objeto onPostCreate() desde onPostCreate()

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