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:
- Android selector.xml con atributos personalizados lanzando XmlPullParserException
- Cambio del borde de enfoque de EdiciónTexto
- ¿Cómo puedo diseñar un conmutador Android?
- Problema de animación de tema de diálogo
- Mezcla de holo light y holo dark EditarTexto en tema
Gracias
- ¿Por qué y cuándo tenemos que añadir android: prefijo al estilo?
- ¿Cómo puedo cambiar el color de fondo de la ActionBar de una ActionBarActivity usando XML?
- Uso de los colores para el nuevo tema de diseño de material en Android
- ¿El panel de vista previa del estudio de Android no representa ActionBar?
- ¿Qué significan los valores para android: backgroundDimAmount?
- Context.obtainStyledAttributes () warning
- ¿Cómo usar el nuevo tema de DayNight?
- Obtener AppCompat no admite la excepción de características del tema actual después de actualizar a la versión AppCompat v22.1.0 issue
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!
- ¿Dónde está la clase SampleZipfileProvider?
- Problemas de instalación del complemento de Android en eclipse