2016-06-25 5 views
1

Problem:Ansichten in benutzerdefinierten Listview-Element haben keine apptheme

ich einen benutzerdefinierten Adapter für meine listview haben, die derzeit eine checkbox und eine edittext enthält. Ich habe keine Themen im Ordner res/values/styles geändert. Aus irgendeinem Grund haben die checkbox und edittext einen anderen Style/Theme als der normale Style/Theme ("AppTheme").

Automatisch generierte Thema:

<!-- Base application theme. --> 
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
<!-- Customize your theme here. --> 
    <item name="colorPrimary">@color/colorPrimary</item> 
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
    <item name="colorAccent">@color/colorAccent</item> 
</style> 

Aber das Kontrollkästchen ist weiß, und kann nur gesehen werden, wenn es aktiviert ist. (Die Farbe ist nicht der oben angegebene colorAccent). Der Bearbeitungstext hat dieselbe Farbe wie das Kontrollkästchen, wenn es aktiviert ist (grün/bläulich).

Farben:

<color name="colorPrimary">#3F51B5</color> 
<color name="colorPrimaryDark">#303F9F</color> 
<color name="colorAccent">#FF4081</color> 

Was haben versucht, ich?

Ich habe versucht, das Thema/Stil des Containers des Elements und des Elements selbst, mit den XML-Attribute android:theme und style. Jeder ohne Erfolg.

Ist das normal? Wenn ja, wie ändere ich den Stil/das Thema des Listeneintrags? Wenn nicht, was könnte falsch sein?

Mein listitem.xml:

<?xml version="1.0" encoding="utf-8"?> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="horizontal" android:layout_width="match_parent" 
android:layout_height="match_parent" > 

<CheckBox 
    android:id="@+id/cb_listitem" 
    android:layout_width="0dp" 
    android:layout_height="match_parent" 
    android:layout_weight="1"/> 

<EditText 
    android:id="@+id/editText_listitem" 
    android:layout_width="0dp" 
    android:layout_height="match_parent" 
    android:layout_weight="9" 
    android:textColor="@color/black"/> 

</LinearLayout> 

getView in benutzerdefinierten Adapter:

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    ViewHolder holder = null; 

    if (convertView == null){ 
     LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     convertView = inflater.inflate(R.layout.listitem_note_checkbox, null); 
     holder = new ViewHolder(); 
     holder.checkBox = (CheckBox)convertView.findViewById(R.id.cb_listitem); 
     holder.editText = (EditText)convertView.findViewById(R.id.editText_listitem); 
     convertView.setTag(holder); 


    } else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 

    holder.editText.setText(items.get(position).note); 
    return convertView; 
} 

screenshots:

screenshot checkbox not checked screenshot checkbox checked

wie wir die Radio-Buttons haben sehen können, die Standard Layou t, accentcolor "pink" und sie haben einen grauen Umriss. aber das Markierungsfeld ist weiß und die Akzentfarbe ist blau/grünlich.

+0

Wenn Sie für Ihre Checkbox und den Bearbeitungstext keinen Stil festgelegt haben, werden diese standardmäßig angezeigt. Fehle ich etwas in deiner Frage? Könnten Sie einen kleinen Screenshot von dem, was tatsächlich ist und was erwartet wird, veröffentlichen? – Rajkiran

+0

ok ich werde Screenshots in einem Moment – Anthony

+0

@MikeM veröffentlichen. versucht, dass, hat nicht funktioniert:/ – Anthony

Antwort

4

Sie müssen die ActivityContext für alles verwenden, die Stile und Attributwerte aus dem Thema erfordert. Da Ihr Adapter ‚s context Feld in seinem Konstruktor initialisiert wird, müssen Sie Ihre Adapter mit den Activity instanziiert‘ s Context, nicht den Application ‚s, so dass die LayoutInflater mit dem richtigen landen. Beispiel:

Verwandte Themen