texto studio que programacion móviles modificar desarrollo curso color cambiar aplicaciones android colors android-spinner

studio - Cambiar el color del triángulo pequeño en la ruleta en Android



modificar spinner android studio (8)

Aquí hay otra forma de resolver eso programáticamente también. (Probado en API 19 y superior).

Use ViewCompat para esto.

ViewCompat.setBackgroundTintList(spinner, ColorStateList.valueOf(your_color));

El uso de spinner.setSupportBackgroundTintList arroja un error

¿Cómo puedo cambiar el color del triángulo pequeño en la esquina inferior derecha de la ruleta como se muestra en la imagen? Está mostrando el color gris predeterminado en este momento. Me gusta esto


Desde Lollipop en adelante, puedes configurar el tinte de fondo en xml ,

android:backgroundTint="@color/my_color"


La mejor y más fácil solución:

spinner.getBackground().setColorFilter(getResources().getColor(R.color.red), PorterDuff.Mode.SRC_ATOP);

Otra solución (Gracias a Simon) si no quieres cambiar todos los Spinners:

Drawable spinnerDrawable = spinner.getBackground().getConstantState().newDrawable(); spinnerDrawable.setColorFilter(getResources().getColor(R.color.red), PorterDuff.Mode.SRC_ATOP); if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { spinner.setBackground(spinnerDrawable); }else{ spinner.setBackgroundDrawable(spinnerDrawable); }


La solución para el SDK mínimo versión 14. Puede usar AppCompatSpinner desde la Biblioteca de soporte:

AppCompatSpinner spinner = (AppCompatSpinner) view.findViewById(R.id.my_spinner); spinner.setSupportBackgroundTintList(ContextCompat.getColorStateList(context, R.color.my_color));


Para obtener las imágenes correctas, puede ir al sitio de Android Asset Studio y elegir el Generador de Holo de Android . Esto creará todos los activos que pueda necesitar, incluido el "triángulo". También genera los archivos XML que implementan los cambios.

Aquí están los archivos XML de ejemplo:

Color personalizado:

<?xml version="1.0" encoding="utf-8"?> <resources> <color name="apptheme_color">#33b5e5</color> </resources>

Estilo de hilandero personalizado:

<?xml version="1.0" encoding="utf-8"?> <!-- Generated with http://android-holo-colors.com --> <resources xmlns:android="http://schemas.android.com/apk/res/android"> <style name="SpinnerAppTheme" parent="android:Widget.Spinner"> <item name="android:background">@drawable/apptheme_spinner_background_holo_light</item> <item name="android:dropDownSelector">@drawable/apptheme_list_selector_holo_light</item> </style> <style name="SpinnerDropDownItemAppTheme" parent="android:Widget.DropDownItem.Spinner"> <item name="android:checkMark">@drawable/apptheme_btn_radio_holo_light</item> </style> </resources>

Tema de aplicación personalizada:

<?xml version="1.0" encoding="utf-8"?> <!-- Generated with http://android-holo-colors.com --> <resources xmlns:android="http://schemas.android.com/apk/res/android"> <style name="AppTheme" parent="@style/_AppTheme"/> <style name="_AppTheme" parent="Theme.AppCompat.Light"> <item name="android:spinnerStyle">@style/SpinnerAppTheme</item> <item name="android:spinnerDropDownItemStyle">@style/SpinnerDropDownItemAppTheme</item> </style> </resources>

Como puede ver, también hay muchos elementos dibujables a los que hacen referencia estos estilos.

Aquí está el específico para el "triángulo" que desea cambiar:

<?xml version="1.0" encoding="utf-8"?> <!-- Copyright (C) 2010 The Android Open Source Project Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_enabled="false" android:drawable="@drawable/apptheme_spinner_disabled_holo_light" /> <item android:state_pressed="true" android:drawable="@drawable/apptheme_spinner_pressed_holo_light" /> <item android:state_pressed="false" android:state_focused="true" android:drawable="@drawable/apptheme_spinner_focused_holo_light" /> <item android:drawable="@drawable/apptheme_spinner_default_holo_light" /> </selector>

No creo que este sea el lugar correcto para enumerar todos los archivos por completo, ya que puede obtenerlos todos directamente desde la herramienta referenciada.

Nota: esta es la forma de crear un tema para toda su aplicación para que todos los hilanderos se actualicen al estilo personalizado.

Si está buscando una forma rápida y sucia de cambiar solo una rueda giratoria, consulte el artículo al que hace referencia Ricky en su comentario:

Recomiendo leerlo de todos modos, porque explica muy bien el proceso y te ayudará a entender el resto de mi respuesta.


Si tiene minSdkVersion 21, es muy simple:

<Spinner style="@style/Widget.AppCompat.DropDownItem.Spinner" android:layout_width="match_parent" android:layout_height="wrap_content" android:backgroundTint="@color/triangleColor" />

donde triangleColor es tu color.


Solo hazlo así. Esto te ayudará a resolver tu problema.

<RelativeLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="spinner background image"> <Spinner android:layout_width="match_parent" android:layout_height="match_parent" android:background="@null"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentRight="true" android:src="arrow image" /> </RelativeLayout>

o

Acabo de echar un vistazo a la respuesta que di para otra consulta: Custom Spinner


Todavía soy muy nuevo en el desarrollo de Android, así que tal vez tome mi consejo con un poco de sal, pero ninguna de las respuestas aquí parece estar relacionada con la implementación de la ruleta que estaba usando.

Lo que estaba buscando

android:backgroundTint="@color/colorPrimary"

Aquí está toda la etiqueta <Spinner> :

<Spinner android:id="@+id/coin_selector" android:layout_width="wrap_content" android:layout_height="21dp" android:layout_margin="26dp" android:layout_weight="1" android:textColor="#FFFFFF" android:dropDownSelector="@color/colorAccent" android:backgroundTint="@color/colorPrimary" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.5" app:layout_constraintStart_toStartOf="parent" tools:layout_editor_absoluteY="89dp"/>