AutoCompleteTextView背景/前景色

时间:2012-08-02 23:04:06

标签: java android xml

我正在使用AutoCompleteTextView.Its工作正常,但下拉文本始终是白色背景上的白色文本。 这张照片解释了我的问题

图片解释我的问题

enter image description here

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);

7 个答案:

答案 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种样式来解决方法:

  1. 在清单中使用扩展主题: ... ...

  2. 创建使用固定样式的新主题(res / values / themes.xml): ...     @风格/ AutoCompleteTextViewLight     @风格/ Widget.DropDownItemLight ...

  3. 创建修复颜色的样式(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);