12

我在 /res/layout/ 中有一个自定义微调器下拉 xml 文件:

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

我正在通过 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"

不幸的是,无论我是否将背景设置为透明,微调器弹出窗口中仍然存在白色背景。

我该如何解决?

4

5 回答 5

29

您可以通过在您的应用中使用继承自 Android 主题之一的主题来覆盖下拉菜单和下拉项目的样式,然后覆盖

android:dropDownSpinnerStyle, 或android:spinnerDropDownItemStyle, 甚至是android:dropDownListViewStyle主题的属性,指向你自己的自定义样式,而不是他们主题中定义的 Android 样式。我以这种方式创建了一个完全自定义的微调器,带有一个透明按钮和下拉菜单。当我为 Fandango 构建平板电脑应用程序时,我什至摆脱了下拉列表分隔符,并为下拉项目设置了自己的间距(看看应用程序主页上的排序电影微调器)。

Android 中的所有内容都是可定制的,您只需要知道在哪里查看即可。;-)

于 2011-08-12T22:58:39.303 回答
26

尝试在微调器上设置:

android:popupBackground="@android:color/transparent"
于 2012-05-28T16:30:19.900 回答
1

您定义的布局仅用于下拉条目,而不是下拉列表本身。因此将背景设置为透明不会对其背景产生任何影响。但即使这样,将背景设置为透明仍然没有效果,因为 TextView (实际上我相信任何视图)默认具有透明背景。

话虽如此,正确的问题是:您能否为条目的父视图(可能是列表)提供自定义布局?据我所知,很遗憾,答案是否定的。

于 2009-12-17T12:57:35.417 回答
0

尝试

android:cacheColorHint="#00000000" 

获得透明度。

我不知道它是否适合你,但有一篇文章 http://android-developers.blogspot.com/2009/01/why-is-my-list-black-android.html 解释了为什么一个移动部分列表以背景颜色出现。

也许你的微调器也有同样的问题。

于 2009-12-19T10:51:32.437 回答
0

我认为这是 1.5 中的错误,请参见此处

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

在 1.6 模拟器或设备中运行它,它仍然保持白色吗?

我实际上是来这里寻找一种方法来解决这个问题的,我怀疑这可能涉及手动写入画布或类似的东西。

有任何想法吗。

PS 我以为我登录的时候不小心发了,有人知道如何摆脱匿名评论吗?也许管理员可以解决这个问题?

于 2010-06-01T15:12:43.393 回答