En mi aplicación de Android, estoy usando spinner, y he cargado datos de la base de datos SQLite en el spinner, y funciona correctamente. Aquí está el código para eso.
Spinner spinner = (Spinner) this.findViewById(R.id.spinner1);
List<String> list = new ArrayList<String>();
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String> (this,android.R.layout.simple_spinner_item, list);
cursor.moveToFirst();
list.add("All Lists");
if (cursor.getCount() > 0) {
for (int i = 0; i < cursor.getCount(); i++) {
keyList[i] = cursor.getString(cursor.getColumnIndex(AndroidOpenDbHelper.KEYWORD));
list.add(keyList[i]);
cursor.moveToNext();
}
}
Database.close();
cursor.close();
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(dataAdapter);
Ahora quiero cambiar el color del texto y el tamaño del texto de los datos de la ruleta. He usado las siguientes líneas XML para mi etiqueta de ruleta en mi archivo XML, pero no funciona.
android:textColor="@android:color/white"
android:textSize="11dp"
¿Cómo puedo cambiar el color y el tamaño del texto de mi ruleta?
Respuestas:
Haga un archivo XML personalizado para su elemento giratorio.
spinner_item.xml:
Dé su color y tamaño personalizado al texto en este archivo.
Ahora use este archivo para mostrar sus elementos de giro como:
No necesita configurar el recurso desplegable. Solo tomará
spinner_item.xml
mostrar sus artículos en spinner.fuente
android:id="@+id/customSpinnerItemTextView"
. Si hubiera depurado esto, lo sabría.Simple y crujiente ...:
fuente
Si todos los íconos giratorios pueden tener el mismo color de texto para sus elementos TextView, otro enfoque es usar un estilo personalizado para los elementos desplegables del ícono:
En
res/values/styles.xml
:Y defina su color personalizado en res / values / colors.xml:
fuente
android:
esta manera<item name="spinnerDropDownItemStyle">@style/mySpinnerItemStyle</item>
Aquí hay un enlace que puede ayudarlo a cambiar el color del Spinner :
haga clic aquí
Debe crear su propio archivo de diseño con una definición personalizada para el elemento giratorio spinner_item.xml :
Si desea personalizar los elementos de la lista desplegable, deberá crear un nuevo archivo de diseño. spinner_dropdown_item.xml :
Y finalmente otro cambio en la declaración de la ruleta:
Eso es.
fuente
android:textSize="20sp"
en el primer fragmento de código es inútil: el tamaño del texto del control se define en elspinner_item.xml
Si trabaja con android.support.v7.widget.AppCompatSpinner, aquí está la solución más simple y probada con estilos:
Y el estilo:
El único inconveniente es Android: backgroundTint establece el color tanto para la flecha desplegable como para el fondo desplegable.
fuente
style="@style/Widget.AppCompat.Spinner.Underlined"
pero solo tienesstyle name="Spinner"
...paddingStart
requiere API 17,backgroundTint
requiere API 21.Para evitar el retraso, no solo debe establecer las propiedades de texto en el
onItemSelected
oyente, sino también en elonCreate
método de la Actividad (pero es un poco complicado).Específicamente, debe poner esto
onCreate
después de configurar el adaptador:Y luego pon esto en
onItemSelected
:Aquí hay un ejemplo completo:
Para más detalles, vea mi pregunta .
fuente
Si desea que el color del texto cambie solo en el elemento seleccionado, esta puede ser una posible solución. Funcionó para mí y debería funcionar para usted también.
fuente
Para alguien que solo necesita un
Style
caminoAppCompat
.Resultado
styles.xml
your_spinner_layout.xml
Además,
y si desea configurar mediante
android:entries
programación con un estilo definido.Prueba esto.
Como en el código, usar lo mismo
Context
con elSpinner
es lo más importante.fuente
Para cambiar el color del texto de la ruleta:
fuente
En lugar de hacer un diseño personalizado para obtener un tamaño pequeño y si desea usar el DISEÑO interno de tamaño pequeño de Android para la ruleta, debe usar:
"android.R.layout.simple_gallery_item" en lugar de "android.R.layout.simple_spinner_item".
Puede reducir el tamaño del diseño de la ruleta. Es solo un simple truco.
Si desea reducir el tamaño de una lista desplegable, use esto:
fuente
La forma más fácil de reutilizar / cambiar los recursos android.R.layout es ir a la definición. En Android Studio, haz Ctrl+ Ben android.R.layout.simple_spinner_item.xml.
Te llevará al archivo de recursos. Simplemente copie el archivo de recursos y agregue un nuevo diseño en su carpeta Package.R.layout y cambie el TextColor of textview como desee y luego simplemente instálelo en el adaptador de esta manera:
fuente
Para aquellos que quieran cambiar de
DrowDownIcon
color, pueden usarlo asífuente
<item name="android:colorControlNormal" tools:targetApi="lollipop">@color/light_gray</item>
AppTheme
Drawable spinnerDrawable = spinner.getBackground().getConstantState().newDrawable(); spinnerDrawable.setColorFilter(getResources().getColor(R.color.md_white_1000), PorterDuff.Mode.SRC_ATOP); if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { spinner.setBackground(spinnerDrawable); }else{ spinner.setBackgroundDrawable(spinnerDrawable); }
Puede cambiar el color del texto anulando el método getView de la siguiente manera:
fuente
Más simple: funciona para mí
fuente
solo usa esto:
fuente
Otra variación de la solución de Ashraf sería asegurarse de tener en cuenta los tamaños de pantalla. Tendrá que activar el spinner en onCreate y configurar el oyente después de configurar el adaptador:
Luego, puede comenzar a cambiar el tamaño del texto de la vista que se muestra antes de hacer clic en la ruleta:
Todo lo que necesita hacer es crear carpetas específicas de diseño como esta:
y luego agregue un archivo xml llamado "bool.xml" en cada una de esas carpetas:
fuente
Primero tenemos que crear el
xml
archivo de recursos simple paratextview
lo siguiente:y guárdalo. después de configurarlo en su lista de adaptadores.
fuente
Puedes tener este tipo de adaptador para spinner, totalmente personalizado:
mientras R.layout.spinner_text es:
fuente
Si desea un método simple, para agregar elementos a un menú desplegable, generalmente los agrega a strings.xml. Aquí hay un ejemplo sobre cómo agregar color usando el archivo strings.xml:
SELECCIONE RANGO DE EDAD
fuente
He hecho esto de la siguiente manera: he usado los métodos getDropDownView () y getView ().
Uso
getDropDownView()
para Spinner abierto.Y uso
getView()
para Spinner cerrado.fuente
Prueba este método. Me esta funcionando.
fuente
simplemente agregue un nuevo estilo como este:
y úsalo:
fuente
eso es todo disfruta de tu codificación ...
fuente