studio - Estilo android spinner
spinner con objetos android (3)
Estoy tratando de hacer que mi aplicación de Android sea un poco más elegante y he progresado un poco, pero el menú desplegable de la rueda giratoria me está causando problemas. Tengo una captura de pantalla para mostrarle el problema:
Lo que quiero es que el cuadro blanco en el fondo sea transparente, como en la misma superposición gris sobre la pantalla trasera que el resto de la pantalla fuera del menú desplegable.
Android 4.0, API 15 si recuerdo bien.
Según lo solicitado aquí es cómo lo hago hasta ahora. Estos son fragmentos de código que creo que son relevantes, pero es posible que me haya perdido algo.
Aquí está el xml para spinner:
<Spinner
android:id="@+id/edit_countrySpinner"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:entries="@array/edit_countryArray"
android:gravity="center"
android:prompt="@string/country_prompt" />
En mis valores / style.xml. Si cambio el color del fondo aquí, el fondo del cuadro de diálogo cambia, pero también el resto de los fondos. No he descubierto cómo cambiar el fondo en el cuadro de diálogo desplegable.
<style name="appcin" parent="@android:style/Theme.NoTitleBar.Fullscreen">
<item name="android:spinnerStyle">@style/spinnerStyle</item>
<item name="android:spinnerItemStyle">@style/SpinnerItem</item>
<item name="android:spinnerDropDownItemStyle">@style/SpinnerDropDownItem</item> -->
<item name="android:background">#FFFFFF</item>
</style>
<style name="spinnerStyle">
<item name="android:background">@drawable/pink_white_dropdown</item>
<item name="android:clickable">true</item>
</style>
<style name="SpinnerItem">
<item name="android:textColor">#993399</item>
<item name="android:background">@drawable/pink_white_dropdown</item>
<item name="android:maxHeight">10dip</item>
</style>
<style name="SpinnerDropDownItem">
<item name="android:textColor">#993399</item>
<item name="android:background">#FFFFFF</item>
</style>
He intentado agregar esto al tema de la aplicación, pero ninguno de ellos hizo ninguna diferencia, el fondo seguía siendo blanco.
<...theme....>
<item name="android:dropDownListViewStyle">@style/DropDownStyle</item>
<item name="android:dropDownSpinnerStyle">@style/DropDownStyle</item>
<item name="android:dropDownSelector">@style/DropDownStyle</item>
</... theme ...>
<style name="DropDownStyle">
<item name="android:background">#FFF000</item>
<item name="android:popupBackground">#FFF000</item>
<item name="android:cacheColorHint">#FFF000</item>
</style>
En drawable / pink_white_dropdown, solo se muestra la misma imagen para todos los casos. pink_white_arrow es una imagen de 9patch que he hecho. Hay muchas guías, aquí hay una que encontré por 30 segundos en google .
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_window_focused="false" android:state_enabled="true"
android:drawable="@drawable/pink_white_arrow"/>
<item android:state_window_focused="false" android:state_enabled="false"
android:drawable="@drawable/pink_white_arrow"/>
<item android:state_pressed="true"
android:drawable="@drawable/pink_white_arrow"/>
<item android:state_pressed="false"
android:drawable="@drawable/pink_white_arrow"/>
<item android:state_focused="true" android:state_enabled="true"
android:drawable="@drawable/pink_white_arrow"/>
<item android:state_enabled="true"
android:drawable="@drawable/pink_white_arrow"/>
<item android:state_focused="true"
android:drawable="@drawable/pink_white_arrow"/>
<item
android:drawable="@drawable/pink_white_arrow"/>
</selector>
En algún lugar de estos archivos creo que algo debería hacerse transparente, pero no sé dónde.
Eliminar el SpinnerStyle
fondo SpinnerStyle
.
Quita esto:
<style name="spinnerStyle">
<item name="android:background">@drawable/whitish_rectangle</item>
</style>
que es lo que dibuja el rectángulo de fondo blanco.
A partir del código en su pregunta, aquí hay un ejemplo básico de cómo puede diseñar su Spinner:
El archivo styles.xml
establece estilos para SpinnerItem
y SpinnerDropDownItem
:
<resources>
<style name="customtheme" parent="@android:style/Theme.Light">
<item name="android:spinnerItemStyle">@style/SpinnerItem</item>
<item name="android:spinnerDropDownItemStyle">@style/SpinnerDropDownItem</item>
</style>
<style name="SpinnerItem">
<item name="android:textColor">#993399</item>
<item name="android:background">@drawable/my_rectangle</item>
</style>
<style name="SpinnerDropDownItem">
<item name="android:textColor">#993399</item>
<item name="android:background">@drawable/my_rectangle</item>
</style>
</resources>
Para las pruebas, he creado una forma my_rectangle.xml
color brillante, llamada my_rectangle.xml
. Reemplace esto con su propio dibujo:
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<solid android:color="#ff0000" />
<stroke
android:width="1dp"
android:color="#888888" />
</shape>
Agrega el Spinner
al diseño de la Activity''s
:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="40dip">
<Spinner
android:id="@+id/edit_countrySpinner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:entries="@array/location_names"/>
</LinearLayout>
Esto produce:
Sin cuadrado blanco en el fondo.
Tuve el mismo problema, y el siguiente código funcionó para mí:
<item name="android:popupBackground">@null</item>
añadir
<item name="android:popupBackground">@null</item>
a tu estilo spinner.