Icono de navegación de la barra de herramientas nunca configurado
Estoy probando el nuevo componente de la barra de herramientas y teniendo algunos problemas con el icono de navegación. Quiero implementar un icono personalizado para la navegación posterior:
En mi manifiesto establezco un padre a mi actividad:
- La propiedad de elevación no funciona android
- El cuadro de diálogo de pantalla completa de Android aparece transparente y en la posición incorrecta
- Android.support.design.widget.FloatingActionButton la implantación de FAB reduce el tamaño de la imagen
- Android L's Ripple Effect - Touch Feedback para los botones - Uso de XML
- Elementos del menú de NavigationView con el contador a la derecha
<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 como esta:
<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 la siguiente 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 nuevo no es el que he establecido con setNavigationIcon()
! Sea cual sea el dibujable que doy al método, el icono de navegación es siempre la flecha hacia atrás.
He intentado quitar la asociación del padre en el manifiesto pero el único efecto es (obviamente) evitar que el botón vaya detrás.
Por el contrario, si quiero que el icono de flecha hacia atrás por defecto y no llamar a setNavigationIcon()
no tengo ningún icono en absoluto.
¿Cuál es la forma correcta de manejar el icono de navegación en la barra de herramientas (personalizado y predeterminado)?
NOte: estoy ejecutando mi prueba en Android 4.4
- ConstraintLayout vs Coordinator?
- Barra de herramientas Navegación Icono de Hamburger ausente
- ¿Cómo puedo eliminar el relleno superior innecesario de la vista de navegación?
- ¿Botón circular material en Android?
- Cómo hacer en la animación del botón de botón Al igual que en la aplicación de Google Android botón Volver?
- Etiqueta flotante con dos editText
- Cómo establecer el estilo de diseño de material a deshabilitado EditText (android)?
- ¿Cuál debe ser el color de la ondulación, colorPrimary o colorAccent? (Diseño de material)
Actualmente se puede utilizar, 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);
Específico para el icono de navegación, este es el orden correcto
// 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 posterior. Esto establecerá el ícono en el icono de material predeterminado
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
Más tarde anular el icono con el personalizado, en mi caso, el icono de nuevo Holo
toolbar.setNavigationIcon(R.drawable.ic_chevron_left_white_36dp);
(La respuesta a user802421)
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" />
Intenté configurar la barra de herramientas como @Gabriele Mariotti, pero tuve algún problema con el título. Así que entonces ordené
toolbar.setTitle("Title") setSupportActionBar(toolbar); toolbar.setNavigationIcon(R.drawable.ic_good);
y funciona.
Acabo de encontrar la solución. Es realmente muy simple:
mDrawerToggle.setDrawerIndicatorEnabled(false);
Espero que te ayude.
He utilizado el método de abajo 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(); } }); }
Puede utilizar 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
Utilice setNavigationIcon para cambiarlo. No olvide crear ActionBarDrawerToggle primero!
Código de ejemplo trabajo 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);
Tenía un problema simillar. Después de un gran dolor de cabeza que encontré, que mi ActionBarDrawerToggle estaba modificando el icono, también cuando no debería modificar el icono (porque no he dado referencia a la barra de herramientas para el componente de conmutación). Así que en mi clase de NavigationDrawerFragment (que maneja la apertura y el cierre) en setUp(...)
mDrawerToggle.setHomeAsUpIndicator(R.drawable.app_icon);
Y finalmente funcionó.
Quite 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(); }
A continuación, establezca el icono
getSupportActionBar().setHomeAsUpIndicator(icon);
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>
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"/>
- Cómo deshabilitar el desplazamiento de NestedScrollView & CollapsingToolbarLayout, por ejemplo, cuando no hay más contenido a continuación?
- No recuerdo mi contraseña de debug.keystore para Android