Dropdown Spinner fuera de la barra de acción? (IceCream Sandwich estilo, con ActionBarSherlock)

¿Hay una manera de crear un Dropdown Spinner para Android 2.3.3? Estoy utilizando ActionbarSherlock.

He aquí un ejemplo de lo que quiero decir:

Introduzca aquí la descripción de la imagen

Gracias

Como está, usted está en suerte. Se puede hacer con ActionBarSherlock y funciona con versiones anteriores a 4.0. Sin embargo, no estoy 100% seguro de que Jake Wharton querrá que lo usemos de esta manera, ya que no es exactamente "api público", AFAIK (he querido preguntar). De todos modos, primero tienes que crear tu propia clase para extender desde la clase ActionBarSherlock:

public class MyIcsSpinner extends IcsSpinner { public MyIcsSpinner(Context context, AttributeSet attrs) { super(context, attrs, com.actionbarsherlock.R.attr.actionDropDownStyle); } public MyIcsSpinner(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } } 

Para incluirlo en un diseño:

 <com.blah.blah.blah.MyIcsSpinner android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_gravity="center" android:textAllCaps="true" android:background="@drawable/abs__spinner_ab_holo_light" android:textColor="#000000" android:gravity="center"/> 

Ahora usted tiene que crear un SpinnerAdapter personalizado, y necesita anular los siguientes métodos para obtener la apariencia adecuada:

 @Override public View getView(int position, View convertView, ViewGroup parent) { final TextView filterName; if (convertView == null) { filterName = (TextView) layoutInflater.inflate(R.layout.filter_item, parent, false); } else { filterName = (TextView) convertView; } filterName.setText(getItem(position)); return filterName; } @Override public View getDropDownView(int position, View convertView, ViewGroup parent) { final TextView filterName; if (convertView == null) { filterName = (TextView) layoutInflater.inflate(R.layout.sherlock_spinner_dropdown_item, parent, false); filterName.setEllipsize(TruncateAt.END); } else { filterName = (TextView) convertView; } filterName.setText(getItem(position)); return filterName; } 

YMMV, esp. Sobre los temas.

He encontrado el mismo problema y mi solución es bastante simple. (No usé HoloEverywhere.)

La idea proviene del proyecto de muestra ABS, cuyo menú desplegable puede visualizarse en dispositivos pre-4.0, así como mediante un submenú. Por lo tanto, mi idea es usar un submenú para disfrazar el icono de 3 puntos. Aquí está el código:

 @Override public boolean onCreateOptionsMenu(Menu menu) { SubMenu sub = menu.addSubMenu("More"); sub.getItem().setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); sub.getItem().setIcon(R.drawable.ic_menu); getSupportMenuInflater().inflate(R.menu.activity_main, sub); return true; } 

Dado que el menú "Más" no tiene un atributo MenuItem.SHOW_AS_ACTION_WITH_TEXT, por lo que la palabra "Más" (o lo que sea que se mencione) en realidad no se mostrará en la barra de acción. El único ícono mostrado R.drawable.ic_menu puede ser copiado del código fuente ABS res / drawable-xxdpi carpetas denominadas "abs__ic_menu_moreoverflow_normal_holo_dark.png", que es el denominado icono de 3 puntos. Y el R.menu.activity_main es el menú xml.

¡Funciona!

  • Tema personalizado ActionBar android (menú no funciona)
  • ¿Cómo puedo cambiar el tema de una SettingsActivity en Android?
  • ActionBarSherlock no admite cuadros de diálogo de alerta de luz-tema?
  • "Necesitas usar un tema theme.appcompat" con Theme.AppCompat como tema, Sdk v23
  • Tema de fondo con estilos y temas
  • Cambiar los fondos de ActionBar y SearchView
  • Appcompat_v7: Error al recuperar el padre del elemento: No se encontró ningún recurso que coincida con el nombre dado
  • Android Studio: Rendering Problems Faltan estilos-tema correcto elegido para este diseño, No se pudo encontrar estilo con id
  • Android spinner no tiene rizado en el botón en sí, sólo sus opciones
  • Definir un estilo personalizado (tema) en un componente de conmutador Android
  • Cambiar el color de la ventana de inicio de la aplicación
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.