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"/>