Android Spinner - 如何使下拉视图透明?
Posted
技术标签:
【中文标题】Android Spinner - 如何使下拉视图透明?【英文标题】:Android Spinner - How to make dropdown view transparent? 【发布时间】:2010-12-27 11:16:35 【问题描述】:我在 /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_
android:layout_
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 保存在对话框中,并且对话框具有背景颜色。 【参考方案1】:您可以通过在您的应用中使用继承自 Android 主题之一的主题来覆盖下拉菜单和下拉项目的样式,然后覆盖
android:dropDownSpinnerStyle
,或android:spinnerDropDownItemStyle
,甚至主题的android:dropDownListViewStyle
属性,指向你自己的自定义样式,而不是他们主题中定义的Android样式。我以这种方式创建了一个完全自定义的微调器,带有一个透明按钮和下拉菜单。当我为 Fandango 构建平板电脑应用程序时,我什至摆脱了下拉列表分隔符,并为下拉项设置了自己的间距(看看应用程序主页上的排序电影微调器)。
Android 中的所有内容都是可定制的,您只需要知道在哪里查看即可。 ;-)
【讨论】:
你能举例说明如何按照你的建议去做吗? @Junaid 我认为你最好学习一下文档:developer.android.com/guide/topics/ui/themes.html 妈啊啊啊!感谢那。但小例子仍然有用:) 一个例子就是了不起的伙伴,我真的会像上帝一样崇拜你.. 每次收获时都会为你牺牲一只小羊羔等等 对不起,伙计们,我没有方便的示例。该代码属于 Fandango。没有什么能阻止您反编译 apk (miui-au.com/add-ons/apktool),并查看我编写的主题/样式。 ;)【参考方案2】:尝试在微调器上设置这个:
android:popupBackground="@android:color/transparent"
【讨论】:
谢谢你!我将其用于自定义颜色: android:popupBackground="#0f0f0f" 效果很好【参考方案3】:您定义的布局仅用于下拉列表的条目,而不是下拉列表本身。因此将背景设置为透明不会对其背景产生任何影响。但即使这样,将背景设置为透明仍然没有效果,因为 TextView(实际上我相信 any 视图)默认具有透明背景。
话虽如此,正确的问题是:您能否为条目的父视图(可能是列表)提供自定义布局?据我所知,很遗憾,答案是否定的。
【讨论】:
感谢您的回复。令人困惑的是,Adobe 的 Photoshop Mobile 似乎使用了与其用于编辑图像的图标相关联的下拉系统。这是我试图复制的效果,我假设它使用了微调器。这是在应用程序中展示这种效果的电影:blogs.adobe.com/rjacquez/2009/11/… 也许他们使用了自定义的 PopupWindow? developer.android.com/reference/android/widget/PopupWindow.html【参考方案4】:试试
android:cacheColorHint="#00000000"
获得透明度。
我不知道它是否适合你,但有一个帖子 http://android-developers.blogspot.com/2009/01/why-is-my-list-black-android.html 这就解释了为什么列表的移动部分以背景颜色显示。
也许你的微调器也有同样的问题。
【讨论】:
【参考方案5】:我认为这是 1.5 中的错误,请参见此处
http://www.symsource.com/index.php?view=article&id=418&option=com_content&format=pdf
在 1.6 的模拟器或设备上运行它,它仍然保持白色吗?
我实际上是来这里寻找解决方法的,我怀疑这可能涉及手动写入画布或类似的东西。
任何想法。
附:我以为我登录时不小心发布了,有人知道如何摆脱匿名评论吗?也许管理员可以解决这个问题?
【讨论】:
以上是关于Android Spinner - 如何使下拉视图透明?的主要内容,如果未能解决你的问题,请参考以下文章