我正在使用AutoCompleteTextView.Its工作正常,但下拉文本始终是白色背景上的白色文本。 这张照片解释了我的问题
图片解释我的问题
XML:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#000"
>
<!-- <AutoCompleteTextView -->
<AutoCompleteTextView
android:id="@+id/text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="Tapez votre 1texte"
android:textColor="#000"
/>
</LinearLayout>
爪哇:
view = (AutoCompleteTextView)findViewById(R.id.text);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line,data);
adapter.setDropDownViewResource(R.drawable.ic_action_search);//dd
view.setAdapter(adapter);
答案 0 :(得分:32)
如果要更改下拉项的外观,请更改传递给ArrayAdapter的XML布局(在您的情况下,这是android.R.layout.simple_dropdown_item_1line
)。
让我们在my_list_item.xml
中创建一个名为res/layout
的新布局:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
style="?android:attr/dropDownItemStyle"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:padding="5dp"
android:textAppearance="?android:attr/textAppearanceMediumInverse"
android:textColor="#00f" />
此文字较小,为蓝色,居中。我不建议使用此布局,更多的是要证明您可以自定义它。
现在改用:
view = (AutoCompleteTextView)findViewById(R.id.text);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.my_list_item, data);
view.setAdapter(adapter);
在此处设置属性时(如文本颜色):
<AutoCompleteTextView
android:id="@+id/text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="Tapez votre 1texte"
android:textColor="#000"
/>
您只是更改下拉列表上方的框(您在与AutoCompleteTextView交互之前看到的框)。希望有所帮助!
答案 1 :(得分:10)
这个问题可能已经过时但我相信这对我来说非常重要。 我遇到了与OP相同的问题,但这是因为我正在使用&#39; getApplicationContext()&#39;代替&#39;这个&#39;
的错误的强>
ArrayAdapter<String> adapter = new ArrayAdapter<String>
(getApplicationContext(), android.R.layout.simple_list_item_1, PLACES);
<强>正确强>
ArrayAdapter<String> adapter = new ArrayAdapter<String>
(this, android.R.layout.simple_list_item_1, PLACES);
答案 2 :(得分:0)
一个棘手的解决方案是:
添加此行
setTheme(android.R.style.Theme); 在您的自动完成文本视图所在的活动文件中的setContentView()
之前。如果有效,请告诉我。
答案 3 :(得分:0)
回答didldum https://code.google.com/p/android/issues/detail?id=5237
通过扩展主题并覆盖输入文本和建议文本的2种样式来解决方法:
在清单中使用扩展主题: ... ...
创建使用固定样式的新主题(res / values / themes.xml): ... @风格/ AutoCompleteTextViewLight @风格/ Widget.DropDownItemLight ...
创建修复颜色的样式(res / values / styles.xml): ... @android:颜色/ primary_text_light @android:颜色/ primary_text_light
答案 4 :(得分:0)
我尝试在setcontext之前设置主题,在arrayAdapter中尝试了不同的资源参数并尝试了不同的主题,但没有任何帮助。
然后我改变了这个&#39;这个&#39; to&#39; getApplicationContext&#39;但问题持续存在。
最后我将context参数更改为&#34; getBaseContext()&#34;问题解决了。
答案 5 :(得分:0)
我在选择&#34; select_dialog_singlechoice
ArrayAdapter<String > s1= new ArrayAdapter<String>
(this,android.R.layout.select_dialog_singlechoice,state);
enter image description here
而不是获取应用程序上下文写入&#34;这个&#34;在ArrayAdapter&lt;&gt ;;
中尝试使用不同的布局,你肯定会解决你的问题
答案 6 :(得分:0)
我通过一种简单的棘手方法解决了这个问题,
只需将您在AndroidManifest.xml中声明的活动的主题更改为,
<activity
android:name=".YourActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:theme="@style/Theme.AppCompat.Light.NoActionBar"
android:windowSoftInputMode="stateHidden"></activity>
,然后在“活动”中,
ArrayAdapter<String> adapter = new ArrayAdapter<String>
(getActivity(), android.R.layout.select_dialog_item, arraylist);