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.
- Problema de estilo al superponer getDropDownView en ArrayAdapter
- View.setEnabled (false) no funciona muy bien en android
- Id de vista siguiente como un atributo personalizado en android
- Actualizando ExpandableListView con notifyDataSetChanged ()
- Establecer diferentes indicadores para diferentes grupos en android
¿Cómo puedo obtener referencia a una vista en el menú que está seleccionado.
- android webview Relacionados
- Cómo deshabilitar el colapso de un ExpandableListView?
- SYSTEM_UI_FLAG_LOW_PROFILE no se puede resolver o no es un campo para google threadsample
- ExpandableListView onExpand siempre desplaza el grupo expandido hacia arriba
- Ampliar vidrio para EditText como en iphone: ¿es posible dibujar fuera de una vista?
- ¿Está declarando una clase interna en una vista peligrosa?
- Reemplazar fragmento dentro de un ViewPager
- Softkey superposición con el campo EditText
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 }
- Colocación de la imagen de fondo
- Ejemplo: socket de red bidireccional de Android utilizando AsyncTask