Estoy usando ActionBarSherlock. Deseo poder hacer que aparezcan dos botones en la barra de acciones en respuesta a una determinada operación del usuario. La operación del usuario no está relacionada con la barra de acciones. La visibilidad de los botones debe controlarse llamando a un método. Además, la respuesta al hacer clic en esos botones se manejará con mi propio código de aplicación.ActionBarSherlock: Mostrar/ocultar botones de elementos de acción mediante programación a través de una llamada a un método
Idealmente, los botones se verán como los que se crean al definir elementos de menú como Elementos de acción usando android:showAsAction="ifRoom|withText"
, como se ilustra en here.
Mi problema es que por lo que yo puedo decir, la ActionBar
API estándar proporciona ningún mecanismo para mostrar u ocultar acción Los botones de artículo a voluntad, y la única vez que los elementos de menú se pueden definir está dentro onCreateOptionsMenu()
que es de curso llamado por el sistema.
Mi creencia es que la única forma en que voy a agregar botones como este y mostrarlos/ocultarlos a voluntad es crear un diseño personalizado para ellos y hacer uso de .setCustomView()
para colocarlos en la barra de acciones. ¿La gente generalmente estaría de acuerdo con eso, o hay algo que me he perdido?
Si sigo la ruta del uso de .setCustomView()
, me gustaría que mis botones se vean idénticos a los botones del elemento de acción que ActionBarSherlock muestra para un elemento de menú que tiene el atributo android:showAsAction="ifRoom|withText"
. Para hacer esto, ¿alguien puede aconsejarme qué tema, estilo o diseños en particular de la biblioteca ActionBarSherlock debo utilizar? Ya he intentado usar R.layout.abs__action_menu_item_layout
, pero intentar inflar este diseño produce una excepción relacionada con colorStateList
al intentar inflar el CapitalizingButton
que contiene el diseño.
Gracias, MH. Aquí hay varias ideas por las cuales estoy agradecido. Todavía hay un problema que me hace preguntarme si todavía necesitaré recurrir a '.setCustomView()'. El problema es que quiero que la etiqueta de texto se muestre siempre, no solo el ícono. En mi HTC One X sin nada en el ABS que no sea un icono de desbordamiento y un único elemento de acción, la etiqueta de texto del elemento de acción solo se muestra en horizontal, aunque haya espacio suficiente en cualquier orientación. Me doy cuenta de que la barra de acción aplica lógica en función de la densidad de la pantalla y el ancho de la barra para determinar si la etiqueta es visible. Voy a investigar esto un poco más. – Trevor
Juse reescribió mi lógica de MenuItem dentro de Fragments usando el consejo que me diste: funciona MUCHO mejor ahora. Cualquiera que vaya por aquí, asegúrese de hacer setHasMenuOptions (verdadero) e ir por el camino @MH. sugerido (hago tanto onPrepareOptionsMenu como haciendo referencia a los objetos MenuItem). – kape123
"Personalmente, prefiero el primer enfoque, ya que mantiene toda la lógica relacionada con el menú agrupada y la visibilidad se basa en algún tipo de estado/modelo". Sí, junto con todo lo demás, juntos en el objeto dios, llamado Actividad. Y el objeto de dios es un patrón anti. –