AutoCompleteTextView цвет фона/переднего плана
Я работаю над 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>
Java:
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
Если вы хотите изменить внешний вид выпадающих элементов, измените формат XML, который вы передаете в ArrayAdapter (в вашем случае это 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). Надеюсь, что это поможет!
Ответ 2
Этот вопрос может быть старым, но я считаю, что это очень важно для меня.
Я столкнулся с той же проблемой, что и OP, но это связано с тем, что вместо 'this'
я использовал 'getApplicationContext()
Wrong
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);
Ответ 3
Сложное решение для этого:
Добавьте эту строку
setTheme (android.R.style.Theme); до setContentView()
в вашем файле активности, в котором присутствует ваше autocompletetextview. Дайте мне знать, если это сработает.
Ответ 4
Ответа на этот вопрос 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
Ответ 5
Я попытался настроить тему перед setcontext, пробовал использовать другой параметр ресурсов в arrayAdapter и пробовал другую тему, но ничего не помогло.
Затем я изменил контекст с 'this' на 'getApplicationContext', но проблема была постоянной.
Наконец, я изменил параметр контекста на "getBaseContext()", и проблема была решена.
Ответ 6
Я получил свое решение в выборе макета "select_dialog_singlechoice
ArrayAdapter<String > s1= new ArrayAdapter<String>
(this,android.R.layout.select_dialog_singlechoice,state);
введите здесь описание изображения
вместо получения контекста приложения write "this" в ArrayAdapter < > ;
попробуйте использовать разные макеты, u определит ваши запросы
Ответ 7
Я решил эту проблему, сделав простой хитрый путь,
Просто измените тему вашей деятельности, объявленной в вашем 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);