Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Barra de acción contextual de compatibilidad de Android

Al intentar seguir las directrices de diseño de Android, me encuentro con un pequeño dilema.

Quiero tener una lista de elementos que puedo presionar varios de varios (multi-select), y luego realizar acciones a granel en ellos.

  • ¿Cómo ocultar el icono de acción compartida (que utiliza más) cerca del proveedor de acciones compartidas?
  • Alinear ProgressBar horizontal a la parte superior (quitar hueco)
  • ActionBarSherlock, ViewPager, TabsAdapter Fragmentos de tabulación anidados
  • Android: TabHost - pasar los parámetros a los fragmentos
  • Obtención del error "La actividad Java.lang.IllegalStateException se ha destruido" al utilizar pestañas con ViewPager
  • Anidar las pestañas en Android 4 con la biblioteca de soporte (ActionBarSherlock)
  • Las Directrices de Diseño sugieren usar la Barra de Acción Contextual para esto, y suena perfectamente como lo que tenía en mente. El problema es que estoy tratando de mantener la compatibilidad hacia atrás a la API 7 (debido a que mi teléfono es 2.3.3 actualmente).

    Estoy usando ActionBarSherlock para obtener otras cosas de la barra de acción, pero no puedo imaginar cómo conseguirlo para encender una barra de acción contextual, ni he descubierto cómo agregar botones arbitrariamente a la ActionBar en ABS. Veo que puede hacer pestañas, así que tal vez esa es la respuesta, pero como estoy tratando de permitir multi-select, no quiero tener el menú de contexto modal normal.

  • ¿Dónde puedo encontrar algunos buenos ejemplos de la interfaz de usuario de Android?
  • ActionBar Acción Elementos que no se muestran
  • PercentRelativeLayout es más performante?
  • No puede publicar la versión actualizada de la aplicación en Google Play Store.
  • Android OBD-II Bluetooth código de ejemplo API no funciona
  • Recibir un error de compilación al actualizar a gradle 3.3 y android build tools 2.3.0
  • 6 Solutions collect form web for “Barra de acción contextual de compatibilidad de Android”

    La configuración de la barra de acción contextual es la misma para configurar los elementos "regulares" de ActionBar en lo que respecta al XML. Este ejemplo en la guía del desarrollador lo explica todo .

    Para utilizar ActionBarSherlock, reemplace las devoluciones de llamada predeterminadas de Android a las devoluciones de llamada editadas por ActionBarSherlock (por ejemplo, en lugar de Android.View.ActionMode , use com.actionbarsherlock.view.ActionMode ).

    Esta es una respuesta tardía, pero creo que ayudaría a la gente pegada.

    Abrir la barra de acción contextual es realmente bastante simple, en cualquier momento de su actividad sólo tiene que llamar:

     startActionMode(mActionModeCallback); 

    Si no está en su actividad principal, como en fragmentos, puede obtener una referencia con

     getSherlockActivity().startActionMode(mActionModeCallback); 

    Y esta es la devolución de llamada

     private ActionMode.Callback mActionModeCallback = new ActionMode.Callback(){ @Override public boolean onCreateActionMode(ActionMode mode, Menu menu) { MenuInflater inflater = mode.getMenuInflater(); inflater.inflate(R.menu.actionbar_context_menu, menu); return true; } @Override public void onDestroyActionMode(ActionMode mode) { } @Override public boolean onActionItemClicked(ActionMode mode, MenuItem item) { switch (item.getItemId()) { case R.id.menu_item1: return true; case R.id.menu_item2: //close the action mode //mode.finish(); return true; default: mode.finish(); return false; } } }; 

    El xml es un menú simple como el de la barra de acción:

     <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/menu_item1" android:icon="@drawable/ic_item1" android:title="@string/ITEM1" android:showAsAction="always|withText" /> <item android:id="@+id/menu_item2" android:icon="@drawable/ic_item2" android:title="@string/ITEM2" android:showAsAction="always|withText" /> 

    ActionBarSherlock tiene su propia implementación de ActionMode, pero tendrás que manualmente controlar su ciclo de vida, escribí un tutorial sobre esto.

    Para una muestra de clic largo, consulte los enlaces a continuación. El primero es el código java requerido para la muestra. Y la segunda es cómo definir el diseño;

    • Fuente de Java
    • Layout xml

    Responderé a la segunda parte de su pregunta. A continuación, se muestra un ejemplo de cómo agregar cualquier barra de acción de la instancia de Vista (botón en el código siguiente) con la biblioteca ActionBarSherlock:

     @Override public boolean onCreateOptionsMenu(Menu menu) { refreshButton = (RotatingButton) LayoutInflater.from(this).inflate(R.layout.actionbar_customview_refresh, null); refreshButton.setOnClickListener(refreshButtonListener); MenuItem item = menu.add(0, android.R.id.copy, 0, getString(R.string.actionbar_refresh)); item.setActionView(refreshButton); item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.main_activity_action_bar, menu); } 

    Yo estaba enfrentando el mismo problema. Se resolvió cuando encontré este enlace . Básicamente, debe crear una clase de devolución de llamada que implemente ActionMode.Callback . En esta clase, inflar la barra de acción con su barra de acción contextual. En cada selección (o clic largo), inicia la devolución de llamada utilizando el método startActionMode . Vea el enlace para un código de trabajo =]

    EDIT: También hay un ejemplo en los ejemplos de Sherlock en /samples/demos/src/com/actionbarsherlock/sample/demos/ActionModes.java

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.