Ich habe einen benutzerdefinierten Listenansichtsadapter, der eine angepasste Listenelementansicht verwendet. Die Ansicht der benutzerdefinierten Listenelemente hat links eine Bildansicht mit einem Stapel von zwei TextViews, einem Haupttitel oben und einem Untertitel unten rechts. Was ich möchte passieren, ist der Untertitel verschwinden zu lassen und der Haupttext, um den Raum zu füllen, wenn es keinen Subtext zur Anzeige gibt.TextView in benutzerdefinierter ListView-Objektansicht füllt Eltern nicht in API 18 & 19
Ich habe dies gegen alle anderen Handy/Tablet-APIs zwischen 16 und 23 getestet. Alles funktioniert wie erwartet AUSSER wenn ich auf einem Gerät mit Android 4.3.1 (API 18) Android 4.4.2 (API 19 läuft). Bei der Verwendung von API 18 oder 19 wird die Sichtbarkeit der Untertitelansicht auf View.GONE gesetzt, aber die Haupttitelansicht wird nicht so skaliert, dass sie den Platz belegt.
Weiß jemand, was hier vor sich geht?
Hier ist die Layoutdatei für das Listenelement:
list_item.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:orientation="vertical"
android:padding="5dp">
<ImageView
android:id="@+id/list_item_snapshot_imageview"
android:layout_width="50dp"
android:layout_height="50dp"
android:background="@color/medium_grey"
android:contentDescription="@string/item_snapshot" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignBottom="@id/list_item_snapshot_imageview"
android:layout_alignTop="@id/list_item_snapshot_imageview"
android:layout_marginLeft="5dp"
android:layout_marginStart="5dp"
android:layout_toEndOf="@id/list_item_snapshot_imageview"
android:layout_toRightOf="@id/list_item_snapshot_imageview"
android:orientation="vertical">
<TextView
android:id="@+id/list_item_title_textview"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:gravity="center_vertical"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textSize="20sp"
tools:text="Main Text" />
<TextView
android:id="@+id/list_item_subtitle_textview"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:gravity="center_vertical"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textSize="14sp"
tools:text="Subtext" />
</LinearLayout>
</RelativeLayout>
Hier ist der Java-Code, der für die Aktualisierung der Inhalte verantwortlich ist. viewHolder
ist nur eine statische Klasse mit Verweisen auf die TextViews und wird in einem Tag auf dem Listenelement für die Ansichtsrecycling gehalten.
NamedItem item = getRowItem(section, position);
if (item != null) {
viewHolder.titleTextView.setText(item.getName());
if (item.getSubtitle() != null) {
String subtitle = ((ItemInfo) item).getSubtitle();
viewHolder.subtitleTextView.setText(subtitle);
viewHolder.subtitleTextView.setVisibility(View.VISIBLE);
} else {
viewHolder.subtitleTextView.setVisibility(View.GONE);
}
}
EDIT Ich habe einige Tests und dies auch geschieht auf API 18 sowie 19. änderte ich den Rest der Beschreibung, dass zu reflektieren.