Question

I have a custom spinner dropdown xml file in /res/layout/:

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

I'm setting the spinner dropdown 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"

Unfortunately, a white background still exists on the spinner popup regardless if I set the background to transparent.

How do I fix this?

Was it helpful?

Solution

You can override the style for the dropdown, and the dropdown item by using a Theme in your app that inherits from one of the Android themes, then override the

android:dropDownSpinnerStyle, or android:spinnerDropDownItemStyle, and even the android:dropDownListViewStyle attribute of the theme, pointing to your own custom style instead of the Android style that is defined in their theme. I created a fully customized spinner this way, with a transparent button AND dropdown. I even got rid of the dropdown list dividers, and set my own spacing for the dropdown items when I built the tablet app for Fandango (take a look at the sort movies spinner on the main page of the app).

Everything in Android is customizable, you just have to know where to look. ;-)

OTHER TIPS

Try setting on the spinner this:

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

The layout you're defining is only used for an entry of your drop-down, not the drop-down itself. So setting the background to transparent won't have any effect on its background. But even if it would, setting the background to transparent would still have no effect, because a TextView (actually I believe any view) has a transparent background by default.

That being said, the right question would be: can you provide a custom layout for an entry's parent view (which is probably a List)? As far as I know, the answer is no, unfortunately.

Try

android:cacheColorHint="#00000000" 

to get transparency.

I dont know if it works for you but there is a post http://android-developers.blogspot.com/2009/01/why-is-my-list-black-android.html that explains why the moving parts of a list appear in the background color.

Maybe its the same issue with your spinner.

It's a bug in 1.5 I think, see here

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

Run it in a 1.6 emulator or device, does it still stay white?

I actually came here looking for an approach to this, I suspect this may involve manually writing to the canvas or something like that.

Any ideas.

P.S. Accidentally posted when I thought I was logged in, anyone know how to get rid of the anonymous comment? Maybe an admin could fix this?

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top