2009-12-16 59 views
11

Tengo un archivo XML desplegable personalizada en spinner/res/layout /:Android Spinner: cómo hacer que la vista desplegable sea transparente?

spinner_view_dropdown.xml: 

<?xml version="1.0" encoding="UTF-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/spinner_item_dropdown" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:background="@android:color/transparent" 
style="@style/spinner_item_dropdown" /> 

Soy la creación de la lista desplegable de ruleta a través de Java:

// "Spinner", aka breadcrumbs 
    Spinner spin = (Spinner) findViewById(R.id.breadcrumb_dropdown); 

    ArrayAdapter adapter = ArrayAdapter.createFromResource(this, R.array.breadcrumb, R.layout.spinner_view); 

    adapter.setDropDownViewResource(R.layout.spinner_view_dropdown); 

    spin.setAdapter(adapter); 
    // /"Spinner" 

Por desgracia, un fondo blanco todavía existe en el spinner popup independientemente de si configuro el fondo como transparente.

¿Cómo puedo solucionar esto?

+0

Ha configurado el fondo transparente, sin embargo el TextView se celebró en un cuadro de diálogo y el diálogo tiene un color de fondo. – Blundell

Respuesta

29

Puede reemplazar el estilo de la lista desplegable, y el elemento desplegable mediante el uso de un tema en su aplicación que se hereda de uno de los temas de Android, entonces anulan la

android:dropDownSpinnerStyle o android:spinnerDropDownItemStyle, e incluso el atributo android:dropDownListViewStyle del tema, apuntando a su propio estilo personalizado en lugar del estilo de Android que se define en su tema. Creé un spinner completamente personalizado de esta manera, con un botón transparente Y un menú desplegable. Incluso me deshice de los divisores de la lista desplegable y establecí mi propio espacio para los elementos desplegables cuando construí la aplicación de la tableta para Fandango (eche un vistazo al separador de películas del género en la página principal de la aplicación).

Todo en Android es personalizable, solo tiene que saber dónde buscar.;-)

+3

¿Puedes dar un ejemplo de cómo hacer eso que has sugerido? – Junaid

+0

@Junaid Creo que estarías mejor estudiando los documentos: http://developer.android.com/guide/topics/ui/themes.html –

+3

¡Maaaaaaan! Gracias por eso. Pero un pequeño ejemplo aún será útil :) –

1

El diseño que está definiendo solo se utiliza para una entrada de su lista desplegable, no el menú desplegable en sí. Por lo tanto, establecer el fondo en transparente no tendrá ningún efecto en su fondo. Pero incluso si lo hiciera, establecer el fondo como transparente aún no tendría ningún efecto, porque un TextView (en realidad creo cualquier vista) tiene un fondo transparente por defecto.

Dicho esto, la pregunta correcta sería: ¿puede proporcionar un diseño personalizado para la vista principal de una entrada (que probablemente sea una Lista)? Por lo que sé, la respuesta es no, desafortunadamente.

+0

Gracias por su respuesta. Lo que es confuso es que Adobe Photoshop Mobile parece usar un sistema desplegable vinculado a sus iconos utilizados para editar una imagen. Este es el efecto que trato de duplicar y supuse que usaba un spinner. Aquí hay una película que muestra este efecto en la aplicación: http://blogs.adobe.com/rjacquez/2009/11/adobe_debuts_photoshopcom_mobi.html – iamkoa

+1

¿Quizás usen una Ventana emergente personalizada? http://developer.android.com/reference/android/widget/PopupWindow.html – Matthias

0

Es un error en 1,5 pienso, ver aquí

http://www.symsource.com/index.php?view=article&id=418&option=com_content&format=pdf

ejecutarlo en un emulador o dispositivo 1.6, lo hace aún permanecer blanca?

En realidad, vine aquí buscando un enfoque para esto, sospecho que esto puede implicar escribir manualmente en el lienzo o algo así.

Cualquier idea.

P.S. Publicado accidentalmente cuando pensé que estaba conectado, ¿alguien sabe cómo deshacerse de los comentarios anónimos? Tal vez un administrador podría arreglar esto?

26

ajuste de probarse el spinner esto:

android:popupBackground="@android:color/transparent" 
+1

Gracias hombre! Lo usé para un color personalizado: android: popupBackground = "# 0f0f0f" funciona a la perfección – Jakob

Cuestiones relacionadas