自动完成文本查看背景/前景色

2022-09-05 00:10:25

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

图片解释我的问题

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

答案 1

如果要更改下拉列表项的外观,请更改传递给 ArrayAdapter 的 XML 布局(在本例中为 )。android.R.layout.simple_dropdown_item_1line

让我们创建一个命名于 的新布局:my_list_item.xmlres/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"        
    />

您只是更改下拉列表(在与“自动完成文本视图”交互之前看到的框)上方的框。希望有所帮助!


答案 2

这个问题可能很老了,但我相信这对我来说非常重要。我遇到了与OP相同的问题,但这是因为我使用“getApplicationContext()”代替“this”



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

推荐