volver transparente redonda poner personalizar instalar google como celular busqueda barra android android-actionbar navigation-drawer toolbar hamburger-menu

android - transparente - Obtener la referencia de la vista del icono de navegación de la barra Google



widget barra busqueda google android (3)

Después de examinar las vistas secundarias de la barra de herramientas en el modo de depuración, vi que el ícono del cajón se puede encontrar allí, como un ImageButton. (Gracias Elltz)

Utilizo una barra de herramientas con diseño xml personalizado con 2 hijos (LinearLayout e ImageView), por lo que mi barra de herramientas tuvo 4 hijos al final, con estas posiciones:

[0] LinearLayout(from custom xml) [1] ImageView(from custom xml) [2] ImageButton(drawer icon) [3] ActionMenuView(menu icon)

Sabiendo esto, ahora puedo usar:

View drawerIcon = toolbar.getChildAt(2);

para obtener una referencia al ícono de menú del cajón. En mi caso, la posición es 2. Esta posición debe ser igual a la cantidad de vistas secundarias en el diseño personalizado de la barra de herramientas.

Si alguien encuentra una mejor solución, por favor avíseme.

Me gustaría destacar el ícono del cajón en mi Toolbar (trabajando en un tutorial). Para eso, necesito su posición. ¿Cómo obtengo una referencia a la vista del icono de navegación del cajón (hamburguesa)?


Si solo desea que el Drawable represente el ícono de navegación de la barra de herramientas, puede hacer esto:

Drawable d = mToolbar.getNavigationIcon();

Puede obtener una referencia al ImageButton utilizado para el icono de navegación de la barra de herramientas mediante un método como este:

public ImageButton getToolbarNavigationButton() { int size = mToolbar.getChildCount(); for (int i = 0; i < size; i++) { View child = mToolbar.getChildAt(i); if (child instanceof ImageButton) { ImageButton btn = (ImageButton) child; if (btn.getDrawable() == mToolbar.getNavigationIcon()) { return btn; } } } return null; }


Puede hacer uso de la descripción de contenido de la vista y luego usar el método findViewWithText() para obtener una referencia de visualización

public static View getToolbarNavigationIcon(Toolbar toolbar){ //check if contentDescription previously was set boolean hadContentDescription = TextUtils.isEmpty(toolbar.getNavigationContentDescription()); String contentDescription = !hadContentDescription ? toolbar.getNavigationContentDescription() : "navigationIcon"; toolbar.setNavigationContentDescription(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 setNavigationContentDescription ensures its existence View navIcon = null; if(potentialViews.size() > 0){ navIcon = potentialViews.get(0); //navigation icon is ImageButton } //Clear content description if not previously present if(hadContentDescription) toolbar.setNavigationContentDescription(null); return navIcon; }

Más