Android: Obtener una vista Referencia a un elemento de menú

Planeo utilizar el patrón de UI de acciones rápidas en mi aplicación. Patrón de interfaz de usuario de las acciones rápidas de Android . La ventana de acción rápida necesita una vista de pivote para seguir.

quickAction.show(View pivotView); 

Tengo la intención de utilizar la acción rápida para el elemento del menú, puedo obtener acceso al elemento que se hace clic. Pero el problema es que tengo que hacer referencia a una vista desde el elemento del menú para que pueda pasar a la acción rápida.

¿Cómo puedo obtener referencia a una vista en el menú que está seleccionado.

Usted puede lograr esto proporcionando su elemento de menú con una propiedad actionViewClass en xml y luego usted será capaz de obtener la vista pivote u quería. El código sería algo como esto

 <item android:id="@+id/menu_find" android:showAsAction="ifRoom" android:actionViewClass="android.widget.ImageButton" /> 

En su OnCreateOptionsMenu hacer esto

 public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); getMenuInflater().inflate(R.menu.menu_search, menu); locButton = (ImageButton) menu.findItem(R.id.menu_find).getActionView(); locButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub createPopup(); mQuickAction.show(v); } }); return true; } 

Pregunta anterior, pero encontré algunos problemas con el atributo actionViewClass . Para cualquiera que se enfrente a esto más tarde …

Llamar findViewById(R.id.mnu_item) en onOptionsItemSelected devolverá un ancla View .

QuickActions en el MenuItems no son un buen diseño, pero encontré que son la forma más sencilla de implementar submenús con fondos personalizados.

Una actualización para cualquiera que quiera encontrar el elemento de vista de menú por otras razones (como yo quería).

Si tienes acceso y usas la barra de herramientas de AppCompat hay una manera. No es la forma más eficiente, pero es la forma más fácil que he encontrado para acceder a la vista del elemento de menú.

 public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { Toolbar toolbar = (Toolbar) view.findViewById(R.id.toolbar); // Find Menu for (int toolbarChildIndex = 0; toolbarChildIndex < toolbar.getChildCount(); toolbarChildIndex++) { View view = toolbar.getChildAt(toolbarChildIndex); // Found Menu if (view instanceof ActionMenuView) { ActionMenuView menuView = (ActionMenuView) view; // All menu items for (int menuChildIndex = 0; menuChildIndex < menuView.getChildCount(); menuChildIndex++) { ActionMenuItemView itemView = (ActionMenuItemView) menuView.getChildAt(menuChildIndex); // Do something to itemView... } } } } 

En la clase de actividad principal, es mejor anular el método onOptionsItemSelected (…); Debe ser algo como a continuación:

 public boolean onOptionsItemSelected(MenuItem item) { // the id is of type int int someId = item.getItemId(); // can use an if() or switch() statement to check if id is selected //a Toast message can be used to show item is selected } 
  • Cómo obtener una vista desde un evento de coordenadas en android cuando la vista establecer la rotación?
  • Vista de lista expandible
  • Ver - buscando un evento como en (Ver) Destruido
  • Android Take Captura de pantalla de Vista de superficie muestra negro
  • Tamaño del texto del hilandero Android
  • ExpandableListView muestra de Google
  • ¿Es posible pasar un onTouchEvent a varias vistas en Android?
  • Los contenidos de CardView no respetan match_parent
  • La animación de vista de Android se detiene al salir de la pantalla
  • Consiga enfocado View from ViewPager
  • Android LongClickListener en los elementos del grupo ExpandableListView
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.