Android AutoCompleteTextView白色下拉列表显示白色。

21

我在这里头疼了,我已经在线搜索了相当一段时间了,似乎这是以前 Android 上的一个 bug,但我还没有找到解决方案。

我有一个 AutoCompleteTextView:

autodesignations = (AutoCompleteTextView) findViewById(R.id.main_autocomp);

adapterShapesAuto = new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line, shapes);

autodesignations.setAdapter(adapterShapes);
小部件可以正常使用,但是下拉菜单的文本始终显示为白色文本在白色背景上。
我已经尝试将适配器的资源设置为几种android内置布局的组合以及我的自定义布局。
甚至将其指向一个TextView资源,也用于Spinner(按预期工作,黑色文本在白色背景上),但没有找到使其工作的方法,仍然得到相同的结果。
有什么帮助吗?

我有同样的问题 - 它也是字段本身的文本,但我可以通过设置android:textColor来解决。 - Shawn Lauzon
4
我也遇到了同样的问题。看起来问题在于定义一行的XML文件中。我使用了内置的android.R.layout.simple_list_item_1,但是它是白色背景上的白色文本。当我改成android.R.layout.simple_dropdown_item_1line时,就能看到文本了。 - SMBiggs
我刚刚创建了自己的simple_dropdown_item_1line资源,并在我的代码中使用它。现在文本是黑色的 :) - Yar
5个回答

21

我曾遇到过这个问题。使用 android.R.layout.select_dialog_item 布局进行修复。


3
传说。非常感谢您分享这一点信息。您为我节省了很多时间! - Eamorr
我现在有一个关于android.R.layout.select_dialog_item的bug,只出现在我有的两个AutoCompleteTextView中的其中一个。我刚刚发现区别的因素是:this与context。 - Poutrathor
我现在可以看到文本,但颜色非常非常浅。 - Francis

3

以下是解决我的问题的答案。

通常情况下,this和上下文引用并不完全相同。可能是因为上下文引用可能会通过某些活动传递下来,无论如何。

因此,我更改了该行代码(包含在onClickListener中),其中“context”是在onCreate()期间检索的,改为使用getApplicationContext();

adapterListModele = new ArrayAdapter<String>(context, android.R.layout.select_dialog_item, listModeleNom);

将以下代码行中使用了类中的this关键字进行翻译:

adapterListModele = new ArrayAdapter<String>(AncestorVehicule.this, android.R.layout.select_dialog_item, listModeleNom);

它有效了!不再出现白色字体。

我在onclicklistener回调之外进行了测试,并注意到两件事:

  • 使用相同的'context'变量确实会使下拉框显示为白色
  • 坚持使用'this'可以避免这个问题。

希望能对其他人有所帮助。


在片段中使用getactivity。谢谢! - narb

1

非常奇怪...我的AutoCompleteTextView正常工作。我发现下拉条目的大小太大了,所以最终设置了自己的资源布局文件。愚蠢的问题...你在xml中设置了textColor吗?

这是我使用的一个...

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/text1"
    android:singleLine="true"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:padding="6dp"
    android:textColor="#000000"
    android:ellipsize="marquee" />

你是否应用了某种主题呢?

另外...也许文本不是白色,而是你意外地留下了空字符串?


不,当我在模拟器上高亮显示时(背景变为橙色/文字变为白色),每个字符串都存在并且匹配(这就是我所说的AutoCompleteTextView工作正常的原因),所以不是空字符串。此外,我在AndroidManifest.xml中没有看到任何主题。在发布之前,我已经查看了那些内容。我还尝试应用以下代码:<TextView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="10dp" android:textSize="16sp" android:textColor="#000"> </TextView> - David Homes
刚开始一个新项目,完全按照之前项目的操作。但现在出问题了。可能是Eclipse上的一个bug吗? - David Homes
也许......针对原始代码,你尝试使用项目/清理了吗?我在奇怪的情况下也不止一两次地这样做过…… - Maximus
尝试了太阳下的一切。项目/清理。开始一个新项目导入之前的项目。什么也没有。 - David Homes
但是使用完全相同的代码创建新项目解决了问题(是的,关闭了自动编译,清除了项目,删除了gen文件夹中的内容等)。我在网上读到过(丢失了URL),有人也遇到了这个问题。 - David Homes
AutoCompleteTextView和EditText一起使用?请问您能再读一遍这篇帖子吗? - user3402040

1
我尝试在setcontext之前设置主题,尝试了不同的arrayAdapter资源参数和不同的主题,但都没有帮助。
然后我将上下文从“this”更改为“getApplicationContext”,但问题仍然存在。
最终我将上下文参数更改为“getBaseContext()”,问题得以解决。

这对我有用!之前尝试编辑样式,但没有起作用。 - Minoru

0

这是你的答案

 SimpleCursorAdapter ad = new SimpleCursorAdapter(this, android.R.layout.simple_dropdown_item_1line, null,
                new String[] { "item_Name" }, new int[] {android.R.id.text1} , 2 );

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