2009-12-16 10 views
11

Ho un file XML discesa filatore personalizzato in/res/layout /:Spinner Android - Come rendere trasparente la visualizzazione a discesa?

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

sto impostando la discesa filatore via 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" 

Purtroppo, uno sfondo bianco esiste ancora sul popup dello spinner, indipendentemente se si imposta lo sfondo su trasparente.

Come posso risolvere questo problema?

+0

Hai impostare lo sfondo trasparente, ma il TextView si svolge in una finestra di dialogo e la finestra di dialogo ha un colore di sfondo. – Blundell

risposta

29

È possibile ignorare lo stile per la discesa, e la voce di menu a discesa utilizzando un tema nel telefono app che eredita da uno dei temi di Android, quindi sovrascrivere il

android:dropDownSpinnerStyle, o android:spinnerDropDownItemStyle, e anche l'attributo android:dropDownListViewStyle del tema, indicando il tuo stile personalizzato anziché lo stile Android definito nel tema. Ho creato uno spinner completamente personalizzato in questo modo, con un pulsante trasparente AND dropdown. Mi sono persino sbarazzato dei divisori dei menu a discesa e ho impostato la mia spaziatura per gli elementi a discesa quando ho creato l'app per tablet per Fandango (dai uno sguardo allo spinner di ordinamento film sulla pagina principale dell'app).

Tutto in Android è personalizzabile, devi solo sapere dove cercare.;-)

+3

Puoi fare un esempio su come fare ciò che hai suggerito? – Junaid

+0

@Junaid Penso che staresti meglio studiando i documenti: http://developer.android.com/guide/topics/ui/themes.html –

+3

Maaaaaaan! Grazie per quello. Ma un piccolo esempio sarà ancora utile :) –

1

Il layout che si sta definendo viene utilizzato solo per voce del menu a discesa, non per il menu a discesa. Quindi, impostare lo sfondo su trasparente non avrà alcun effetto sul suo sfondo. Ma anche se lo fosse, l'impostazione dello sfondo trasparente non avrebbe ancora alcun effetto, poiché un TextView (in realtà credo che qualsiasi vista) abbia uno sfondo trasparente per impostazione predefinita.

Detto questo, la domanda giusta sarebbe: puoi fornire un layout personalizzato per la vista padre di una voce (che è probabilmente una lista)? Per quanto ne so, la risposta è no, sfortunatamente.

+0

Grazie per la risposta. Ciò che confonde è il fatto che Adobe Photoshop Mobile sembra utilizzare un sistema a discesa legato alle icone utilizzate per modificare un'immagine. Questo è l'effetto che sto cercando di duplicare e ho pensato che usasse uno spinner. Ecco un film che mostra questo effetto nell'applicazione: http://blogs.adobe.com/rjacquez/2009/11/adobe_debuts_photoshopcom_mobi.html – iamkoa

+1

forse usano un PopupWindow personalizzato? http://developer.android.com/reference/android/widget/PopupWindow.html – Matthias

0

Si tratta di un bug in 1,5 credo, vedi qui

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

Run in un emulatore 1.6 o dispositivo, lo fa ancora rimanere bianco?

In realtà sono venuto qui cercando un approccio a questo, ho il sospetto che ciò possa comportare la scrittura manuale sulla tela o qualcosa del genere.

Qualsiasi idea.

P.S. Postato casualmente quando pensavo di essere loggato, qualcuno sa come sbarazzarsi del commento anonimo? Forse un amministratore potrebbe risolvere questo problema?

26

impostazione provare il filatore questo:

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

Grazie amico! l'ho usato per un colore personalizzato: android: popupBackground = "# 0f0f0f" funziona perfettamente – Jakob