2009-12-16 5 views
11

Je dispose d'un fichier xml menu déroulant spinner personnalisé dans/res/layout /:Android Spinner - Comment rendre la vue déroulante 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" /> 

J'installe le menu déroulant spinner 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" 

Malheureusement, un fond blanc existe toujours sur le spinner popup indépendamment si je mets l'arrière-plan à transparent.

Comment résoudre ce problème?

+0

Vous avez défini l'arrière-plan transparent, mais le textview est maintenu dans une boîte de dialogue et la boîte de dialogue a une couleur d'arrière-plan. – Blundell

Répondre

29

Vous pouvez remplacer le style de la liste déroulante, et l'élément de menu déroulant à l'aide d'un thème dans votre application qui hérite de l'un des thèmes Android, puis remplacer les

android:dropDownSpinnerStyle ou android:spinnerDropDownItemStyle, et même l'attribut android:dropDownListViewStyle du thème, en pointant vers votre propre style personnalisé au lieu du style Android qui est défini dans leur thème. J'ai créé un spinner entièrement personnalisé de cette façon, avec un bouton transparent et une liste déroulante. Je me suis même débarrassé des séparateurs de la liste déroulante, et j'ai défini mes propres espacements pour les éléments de la liste déroulante lorsque j'ai construit l'application pour tablette pour Fandango (jetez un coup d'œil sur le filme des films sur la page principale de l'application).

Tout sur Android est personnalisable, il vous suffit de savoir où chercher.;-)

+3

Pouvez-vous donner un exemple pour faire ce que vous avez suggéré? – Junaid

+0

@Junaid Je pense que vous seriez mieux d'étudier les docs: http://developer.android.com/guide/topics/ui/themes.html –

+3

Maaaaaaan! Merci pour ça. Mais petit exemple sera toujours utile :) –

1

La mise en page que vous définissez est uniquement utilisée pour une entrée de votre liste déroulante, et non la liste déroulante elle-même. Ainsi, définir l'arrière-plan sur transparent n'aura aucun effet sur son arrière-plan. Mais même si c'était le cas, mettre l'arrière-plan à transparent n'aurait toujours aucun effet, car un TextView (en fait, je crois toute vue) a un arrière-plan transparent par défaut. Cela dit, la bonne question serait: pouvez-vous fournir une mise en page personnalisée pour la vue parent d'une entrée (qui est probablement une liste)? Pour autant que je sache, la réponse est non, malheureusement.

+0

Merci pour votre réponse. Ce qui est déroutant, c'est que Photoshop d'Adobe semble utiliser un système de liste déroulante lié à ses icônes utilisées pour éditer une image. C'est l'effet que j'essaye de reproduire et j'ai supposé qu'il a utilisé un fileur. Voici un film montrant cet effet dans l'application: http://blogs.adobe.com/rjacquez/2009/11/adobe_debuts_photoshopcom_mobi.html – iamkoa

+1

peut-être utilisent-ils un PopupWindow personnalisé? http://developer.android.com/reference/android/widget/PopupWindow.html – Matthias

0

Il est un bogue dans 1.5 je pense, voir ici

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

exécuter dans un émulateur 1.6 ou un périphérique, il ne reste toujours blanc?

En fait, je suis venu ici à la recherche d'une approche à ce sujet, je suppose que cela peut impliquer d'écrire manuellement sur la toile ou quelque chose comme ça.

Des idées.

P.S. Accidentellement posté quand je pensais que j'étais connecté, quelqu'un sait comment se débarrasser du commentaire anonyme? Peut-être qu'un administrateur pourrait résoudre ce problème?

26

réglage Essayez sur la fileuse ceci:

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

Merci l'homme! J'ai utilisé ceci pour une couleur personnalisée: android: popupBackground = "# 0f0f0f" fonctionne parfaitement – Jakob

Questions connexes