Android下拉菜单 - 如何使下拉视图透明?

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"

不幸的是,即使我将背景设置为透明,在旋转器弹出窗口上仍然存在白色背景。

我该如何解决这个问题?


您已将背景设置为透明,但TextView位于对话框中,而对话框具有背景颜色。 - Blundell
5个回答

29
您可以通过在应用程序中继承自Android主题的主题来覆盖下拉菜单和下拉菜单项的样式,然后覆盖android:dropDownSpinnerStyleandroid:spinnerDropDownItemStyle甚至是主题的android:dropDownListViewStyle属性,将其指向您自己定义的自定义样式,而不是在其主题中定义的Android样式。我以这种方式创建了一个完全定制化的Spinner,其中包括透明按钮和下拉菜单。我还去掉了下拉列表分隔符,并在构建Fandango平板应用程序时设置了自己的下拉菜单项间距(请查看应用程序主页上的电影排序Spinner)。Android中的所有内容都是可定制的,只要您知道在哪里查找即可。;-)

3
你能举个例子来说明你所建议的做法吗? - Junaid
@Junaid 我认为你最好研究一下文档:http://developer.android.com/guide/topics/ui/themes.html - Christopher Perry
3
谢谢你。不过,如果能给一个小例子会更有帮助 :) - Roman Minenok
2
一个例子会很棒,伙计。我会像崇拜神一样崇拜你...每个收成都会为你献祭小羊之类的。 - user965369
抱歉,伙计们,我手头没有示例给你们。这段代码属于Fandango。但是,你们可以通过反编译apk(http://www.miui-au.com/add-ons/apktool/)并查看我编写的主题/样式。;) - Christopher Perry

26

尝试在旋转器上设置以下内容:

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

1
谢谢!我用这个自定义颜色:android:popupBackground="#0f0f0f",效果完美。 - Jakob Harteg

1

你正在定义的布局仅用于下拉菜单的一个条目,而不是整个下拉菜单本身。因此,将背景设置为透明对其背景没有任何影响。但即使有影响,将背景设置为透明仍然没有效果,因为TextView(实际上我相信任何视图)默认具有透明背景。

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


谢谢您的回复。令人困惑的是,Adobe的Photoshop Mobile似乎使用与其用于编辑图像的图标相关联的下拉系统。这就是我试图复制的效果,我认为它使用了一个微调器。以下是展示该应用程序中此效果的电影: http://blogs.adobe.com/rjacquez/2009/11/adobe_debuts_photoshopcom_mobi.html - iamkoa
1
也许他们使用了自定义的PopupWindow?http://developer.android.com/reference/android/widget/PopupWindow.html - mxk

0

0

我认为这是1.5版本中的一个错误,请看这里

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

在1.6模拟器或设备上运行,它仍然是白色的吗?

我来这里实际上是寻找一种解决方法,我怀疑这可能涉及手动编写到画布上或类似的操作。

有什么想法吗?

P.S. 我以为我已经登录了,不小心发布了匿名评论,有人知道如何去掉匿名评论吗?也许管理员可以修复这个问题?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接