¿El icono del logotipo de la barra de herramientas se puede hacer clic?
He utilizado la barra de herramientas por lo que ahora quiero aplicar clic evento sobre icono de logotipo ¿cómo puedo obtener este evento?
Aquí hay algo de codificación que he hecho
- ¿Cuál es la forma correcta de usar la barra de herramientas y SwipeRefreshLayout?
- Barra de herramientas no se contraerá con Scrollview como hijo de CoordinatorLayout
- Cuando agregue una vista personalizada en la barra de herramientas de Android, habrá un marginLeft
- Título de la barra de herramientas con vista personalizada
- Cómo cambiar el color del icono de inicio de la barra de herramientas
Toolbar toolbar = null; toolbar = (Toolbar) findViewById(R.id.actionToolbar); setSupportActionBar(toolbar); setTitle(null); toolbar.setNavigationIcon(R.drawable.back); toolbar.setNavigationContentDescription("BACK"); toolbar.setLogo(R.drawable.ic_launcher); toolbar.setLogoDescription("LOGO"); toolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(MainActivity.this, "Nav", Toast.LENGTH_SHORT).show(); } });
Aquí he configurado el icono de navegación y el icono de logotipo por lo que ahora quiero icono del logotipo haga clic en el evento, ¿cómo es posible?
- ¿Cómo puedo alinear el menú / iconos de la barra de herramientas Android a la izquierda como en la aplicación de Google Maps?
- Barra de herramientas de Android flecha posterior con icono como WhatsApp
- SwitchCompat en barra de acción, con fragmento
- Android: fitsSystemWindows no funciona en la barra de herramientas
- ActionBar / Barra de herramientas no se muestra en la versión de Lollipop de la aplicación
- Título, etc. que no se muestran en la barra de herramientas de Android
- CollapsingToolbarLayout no funciona correctamente
- Mostrar opciones de menú en la barra de herramientas de Actividad contiene pestañas como fragmento
Usted necesita conseguir la primera referencia de él
View logoView = getToolbarLogoView(toolbar); logoView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //logo clicked } });
Usando la descripción del contenido podemos obtener la referencia de la View
. Ver los comentarios en línea.
public static View getToolbarLogoIcon(Toolbar toolbar){ //check if contentDescription previously was set boolean hadContentDescription = android.text.TextUtils.isEmpty(toolbar.getLogoDescription()); String contentDescription = String.valueOf(!hadContentDescription ? toolbar.getLogoDescription() : "logoContentDescription"); toolbar.setLogoDescription(contentDescription); ArrayList<View> potentialViews = new ArrayList<View>(); //find the view based on it's content description, set programatically or with android:contentDescription toolbar.findViewsWithText(potentialViews,contentDescription, View.FIND_VIEWS_WITH_CONTENT_DESCRIPTION); //Nav icon is always instantiated at this point because calling setLogoDescription ensures its existence View logoIcon = null; if(potentialViews.size() > 0){ logoIcon = potentialViews.get(0); } //Clear content description if not previously present if(hadContentDescription) toolbar.setLogoDescription(null); return logoIcon; }
Me estaba haciendo la misma pregunta y me encontré con esto. Tomé un acercamiento similar a Nikola Despotoski pero con una puesta en práctica diferente.
En lugar del método, lo que hice fue:
// Set drawable toolbar.setLogo(ContextCompat.getDrawable(context, R.drawable.logo)); // Find logo View view = toolbar.getChildAt(1); view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // Perform actions } });
Un poco hack-ish, pero volveré revisarlo un poco más tarde. Compartir para fines de discusión.
- Problemas al actualizar la nueva versión 10.2.0 de PlayServices y Firebase
- Android HttpResponse response Código