在安卓上如何自定义AutoCompleteTextView下拉框

14
我想知道如何自定义AutoCompleteTextView下拉菜单被选中时的颜色。 我可以自定义其他所有内容,但无法更改所选颜色 - 它保持不变。
Activity中:
ArrayAdapter<String> adap = new ArrayAdapter<String>(this, R.layout.row, strings);
autoNewBird = (AutoCompleteTextView)findViewById(R.id.autoCompleteBirdName);
autoNewBird.setAdapter(adap);

row.xml:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/birdtext"
android:padding="5dip"  
android:background="@drawable/custom_spinner"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
style="@style/spinner_item" 
android:gravity="center_vertical"
android:layout_gravity="center_vertical" android:lines="1"/>

还有在“drawable”文件夹中的可绘制文件“custom_spinner.xml”

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_window_focused="false" android:state_enabled="true"
android:drawable="@drawable/listback" />
<item android:state_window_focused="false" android:state_enabled="false"
    android:drawable="@drawable/listback" />
<item android:state_pressed="true" android:drawable="@drawable/threebythree" />
<item android:state_enabled="true" android:state_focused="true"
android:drawable="@drawable/threebythree" />              
<item android:state_enabled="true" android:drawable="@drawable/listback" />
<item android:state_focused="true" android:drawable="@drawable/listback" />
<item android:drawable="@drawable/listback" />
</selector>

在下拉菜单中,这个方法适用于一个spinner,但是对于一个AutoCompleteTextView,当被选中时它不会像spinner一样改变颜色。

如果您有任何帮助或经验,请不吝赐教。

2个回答

12

我猜我找到了解决方法,或者说我之前做错了什么。 在主题中,我放置了以下内容:

<item name="android:autoCompleteTextViewStyle">@style/custom_autocomplete</item>
并且样式是(或相关部分):
<item name="android:dropDownSelector">@drawable/custom_spinner</item>

并且自定义的 spinner 在上面。

希望这能帮助到别人。


这是正确的解决方案。为了更清晰,第二行应该按照以下定义的样式进行编写:<style name="custom_autocomplete" parent="@android:style/Widget.Holo.AutoCompleteTextView"></style>。希望这可以帮到你 :) - Sandra
你在使用哪种布局?我是这样做的:aAdapterAutoComplete = new ArrayAdapter<String>(getActivity().getApplicationContext(), R.layout.auto_complete_text, suggest); autoComplete.setAdapter(aAdapterAutoComplete); - user1163234

5
在XML中,对于AutoCompleteTextView:
android:dropDownSelector="@drawable/some_drawable"

只有这个对我起作用。将 <item name="android:dropDownSelector">@drawable/custom_spinner</item> 添加到我的自动完成样式类中并不起作用,因为并非所有属性都适用于样式文件,而是必须在 XML 布局中的自动完成定义中添加。 - Mike6679

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