toolbaritem android toolbar appcompat material-design android-actionbar-compat

android - toolbaritem - El icono de navegación de la barra de herramientas nunca está



toolbar xamarin forms (13)

(La respuesta al usuario802421)

private void setToolbar() { Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); if (toolbar != null) { setSupportActionBar(toolbar); toolbar.setNavigationIcon(R.drawable.ic_action_back); toolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onBackPressed(); } }); } }

toolbar.xml

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="@dimen/toolbar_height" android:background="?attr/colorPrimaryDark" />

Estoy probando el nuevo componente de la barra de herramientas y tengo algunos problemas con el ícono de navegación. Quiero implementar un icono personalizado para la navegación posterior:

En mi manifiesto, configuré un padre para mi actividad:

<activity android:name=".CardsActivity" android:parentActivityName=".MainActivity"> <!-- Parent activity meta-data to support API level 7+ --> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value=".MainActivity" /> </activity>

Declaro la barra de herramientas así:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" tools:context="com.example.lollitest.MainActivity" > <android.support.v7.widget.Toolbar android:id="@+id/my_awesome_toolbar" android:layout_height="wrap_content" android:layout_width="match_parent" android:minHeight="?attr/actionBarSize" android:layout_marginBottom="10dp" android:background="?attr/colorPrimary" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/my_awesome_toolbar" android:text="@string/hello_world" /> </RelativeLayout>

Luego en mi actividad configuro la barra de herramientas de esta manera:

Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar); toolbar.setNavigationIcon(R.drawable.ic_good); toolbar.setTitle("Title"); toolbar.setSubtitle("Sub"); toolbar.setLogo(R.drawable.ic_launcher); setSupportActionBar(toolbar);

Que me da:

¡El icono de la parte posterior no es el que configuré con setNavigationIcon() ! Cualquier dibujar que le dé al método, el ícono de navegación es siempre la flecha hacia atrás.

Intenté eliminar la asociación padre en el manifiesto, pero el único efecto es (obviamente) evitar que el botón regrese.

Por el contrario, si quiero el icono de flecha atrás predeterminado y no llamo a setNavigationIcon() no tengo ningún icono.

¿Cuál es la forma correcta de manejar el ícono de navegación en la barra de herramientas (personalizado y por defecto)?

NO: estoy ejecutando mi prueba en Android 4.4


Acabo de encontrar la solución. Es realmente muy simple:

mDrawerToggle.setDrawerIndicatorEnabled(false);

Espero que te ayude.


Actualmente puedes usarlo, cambiando el orden: (parece ser un error)

Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar); setSupportActionBar(toolbar); toolbar.setNavigationIcon(R.drawable.ic_good); toolbar.setTitle("Title"); toolbar.setSubtitle("Sub"); toolbar.setLogo(R.drawable.ic_launcher);


Elimine esta línea de la actividad si ha agregado

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

Luego establece el ícono

getSupportActionBar().setHomeAsUpIndicator(icon);


En caso de que no desee configurar la barra de herramientas como la barra de acciones, puede usar esto:

val toggle = ActionBarDrawerToggle(this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close) toggle.isDrawerSlideAnimationEnabled = false toggle.isDrawerIndicatorEnabled = false toggle.setHomeAsUpIndicator(AppCompatResources.getDrawable(this, ...)) drawer!!.addDrawerListener(toggle) toggle.setToolbarNavigationClickListener { setDrawerOpened(!isDrawerOpened()) } toggle.syncState() fun setDrawerOpened(open: Boolean) { if (open == drawerLayout.isDrawerOpen(GravityCompat.START)) return if (open) drawerLayout.openDrawer(GravityCompat.START) else drawerLayout.closeDrawer(GravityCompat.START) }


Específico para el ícono de navegación, esta es la orden correcta

// get the actionbar as Toolbar and set it up Toolbar toolbar = (Toolbar) findViewById(R.id.signIn_toolbar); setSupportActionBar(toolbar);

Informar a la barra de herramientas para proporcionar navegación hacia atrás. Esto establecerá el ícono al ícono de material predeterminado

getSupportActionBar().setDisplayHomeAsUpEnabled(true);

Más tarde anula el ícono con el ícono personalizado, en mi caso el ícono de Holo

toolbar.setNavigationIcon(R.drawable.ic_chevron_left_white_36dp);


Intenté configurar una barra de herramientas como @Gabriele Mariotti, pero tuve algún problema con el título. Entonces, configuré el orden para

toolbar.setTitle("Title") setSupportActionBar(toolbar); toolbar.setNavigationIcon(R.drawable.ic_good);

y funciona.


Prueba esto:

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:toolbar="http://schemas.android.com/apk/res-auto" android:id="@+id/tool_drawer" android:layout_width="match_parent" android:layout_height="?actionBarSize" toolbar:navigationIcon="@drawable/ic_navigation"> </android.support.v7.widget.Toolbar>


Puede usar el método invalidate() para cambiar el estado de la barra de herramientas en cualquier lugar. Ejemplo:

Toolbar toolbar = (Toolbar)findViewById(R.id.my_awesome_toolbar); setSupportActionBar(toolbar); toolbar.setNavigationIcon(R.mipmap.arrow_white); toolbar.invalidate(); // restore toolbar


Tuve un problema similar. Después de un gran dolor de cabeza, encontré que mi ActionBarDrawerToggle estaba modificando el ícono, también cuando no debería modificar el ícono (porque no le di referencias a la barra de herramientas para el componente de alternar). Entonces en mi clase NavigationDrawerFragment (que maneja la apertura y el cierre) en el setUp(...) configuré
mDrawerToggle.setHomeAsUpIndicator(R.drawable.app_icon);
y finalmente funcionó.


Usé el método a continuación, que realmente es un enigma de todos los anteriores. También encontré que onOptionsItemSelected nunca se activa.

mDrawerToggle.setDrawerIndicatorEnabled(false); getSupportActionBar().setHomeButtonEnabled(true); Toolbar toolbar = (Toolbar) findViewById(R.id.tool_bar); if (toolbar != null) { toolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onBackPressed(); } }); }


Use setNavigationIcon para cambiarlo. ¡no olvide crear primero ActionBarDrawerToggle!

código de muestra que funciona para mí:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); drawer = (DrawerLayout)findViewById(R.id.drawer_layout); ActionBarDrawerToggle toggle = new ActionBarDrawerToggle( this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); drawer.setDrawerListener(toggle); toggle.syncState(); toolbar.setNavigationIcon(R.drawable.ic_menu);


trabaja para mi...

<android.support.v7.widget.Toolbar android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/toolBar" android:background="@color/colorGreen" app:title="Title" app:titleTextColor="@color/colorBlack" app:navigationIcon="@drawable/ic_action_back"/>