2015-11-13 8 views
5

Ich weiß, dass es eine Menge Fragen gibt, mit Antworten, aber keine von ihnen funktioniert für mich.Wie ändert man die Popup-Textfarbe appcompat autocomplete?

Meine Stile und Themen:

<style name="AnnaTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <!-- 
    Colors, 
    and stuff 
    --> 
    <item name="android:dropDownItemStyle">@style/DropDownItemStyle</item> 
    <item name="android:spinnerDropDownItemStyle">@style/DropDownItemStyle</item> 
    <item name="spinnerDropDownItemStyle">@style/DropDownItemStyle</item> 
</style> 

<style name="DropDownItemStyle" parent="Widget.AppCompat.Light.DropDownItem.Spinner"> 
    <item name="android:textColor">@android:color/black</item> 
</style> 

Aber das Ergebnis ist immer noch so:

White dropdown

Das Layout ist dies:

<android.support.design.widget.TextInputLayout 
    android:id="@+id/til_email" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"> 

     <AutoCompleteTextView 
      android:id="@+id/et_email" 
      android:layout_width="@dimen/join_field_width" 
      android:layout_height="wrap_content" 
      android:hint="@string/email" 
      android:inputType="textEmailAddress"/> 

</android.support.design.widget.TextInputLayout> 

Und der Adapter:

emailView.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, Utils.getUniqueEmailsFromAccount(this))); 

Können Sie mir helfen, den Text schwarz zu machen?

+0

Try 'android: popupBackground = "# 000000"' auf AutoCompleteTextView –

+0

Durch die Art und Weise, wie haben Sie Ihre AutoCompleteTextView erklären können Sie die Java setzen? –

+0

Ich möchte keinen schwarzen Hintergrund, sondern schwarzen Text. Ich habe auch den Code für den Adapter hinzugefügt. – Pitel

Antwort

2

diesen Rat Versuchen Sie dann ...

versuchen Sie zuerst, um dies zu ändern Adapter (wenn es nicht mit der zweiten Option versuchen nicht funktioniert:

emailView.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_dropdown_item_1line, Utils.getUniqueEmailsFromAccount(this)));


1 # Erstellen Sie einen style wie folgt:

<style name="CustomAuto"> 
    <item name="android:paddingTop">3dp</item> 
    <item name="android:paddingRight">5dp</item> 
    <item name="android:paddingBottom">3dp</item> 
    <item name="android:paddingLeft">5dp</item> 
    <item name="android:textColor">#000</item> 
</style> 
Erstellen 210

2 # ein Layout wie folgt:

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:id="@+id/any_id" 
style="@style/CustomAuto" 
android:singleLine="true" /> 

3 # ändern Sie Ihre Adapter zu:

emailView.setAdapter(new ArrayAdapter<>(this,R.layout.text_custom_view, Utils.getUniqueEmailsFromAccount(this))); 
+0

Zuerst möchte ich Textfarbe von Popup, nicht Hintergrund. Das Ändern zu getBaseContext() hat nichts bewirkt. Und ändern Sie die textColor, wie Sie suidests ändert Textfarbe von EditText, nicht das Popup. – Pitel

+0

Probieren Sie meine zweite Option –

+1

android.R.layout.simple_dropdown_item_1line hat den Trick! Vielen Dank! – Pitel

0

Eine einfache Lösung wäre, ein eigenes Listenelement erschaffen. Erstellen Sie eine Layout-XML-Datei und schreiben Sie die folgenden Codes dort.

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:textColor="@android:color/black" 
    android:padding="5dp" 
    android:layout_width="match_parent" 
    android:singleLine="true" 
    android:layout_height="wrap_content"/> 

Und übergeben Sie es an den Konstruktor des Adapters.

emailView.setAdapter(new ArrayAdapter<>(this, R.layout.that_layout, Utils.getUniqueEmailsFromAccount(this))); 
0

Sie auch den Adapter überschreiben können:

emailView.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, Utils.getUniqueEmailsFromAccount(this))){ 
     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      View view = super.getView(position, convertView, parent); 

      TextView text = (TextView)view.findViewById(android.R.id.text1); 

      text.setTextColor(Color.BLACK); 

      return view; 

     }};