2017-07-07 3 views
0

Erstens, ich bin neu bei Android, also wenn ich etwas Grundlegendes verpasst habe entschuldige ich mich.Android ListView Breite ändert sich

Ich habe eine Seite, die zwei ListViews nebeneinander hat, beide mit unterschiedlichem Inhalt. Ich habe auch einen TextView über den ListViews und einen anderen TextView unterhalb der Listviews. Diese Textansichtsfelder ändern sich basierend auf Elementen, die in einer der beiden ListViews ausgewählt wurden.

Diese beiden ListViews sitzen Seite an Seite und nehmen jeweils die Hälfte des Bildschirms ein, während eine Textansicht direkt über und direkt darunter sitzt, beide zentriert auf der Seite. Ein Bild ist unten gezeigt.

This is the page looking normal on load.

Das Problem ist, wenn ich ein Element aus jeder Liste auswählen. Ich habe das Gefühl, dass mir einige XML-Eigenschaften fehlen, aber ich bin nicht sicher, welche Eigenschaften oder ob dies überhaupt der Fall ist. Wenn ein Element ausgewählt ist, sagen wir aus der ListView auf der rechten Seite, wird die TextView am unteren Rand mit Text aus einem Array aktualisiert. Der ListView entscheidet auch, die Breite zu ändern, und ich bin nicht sicher, warum das ist .... Ich möchte nicht, dass der ListView die Breite ändert. Ich möchte, dass es nur die Hälfte der Seite und die Hälfte der Seite einnimmt.

This is the page after an item from the right ListView has been selected.

Ich möchte auch Dinge in RelativeLayout halten. Ich glaube auch, dass es nur ein XML-Problem ist und nicht mit dem Adapter oder irgendeinem anderen Code zu tun, deshalb werde ich das jetzt nicht aufnehmen. Ich kann es bei Bedarf aufnehmen.

Jede Hilfe wäre großartig. Danke im Voraus.

content_titles.xml meine Tätigkeit XML-Datei

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

<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context=".TitlesActivity"> 

<ListView 
    android:id="@+id/unlocked_titles_list" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:longClickable="true" 
    android:layout_below="@+id/current_title" 
    android:layout_alignEnd="@+id/requirements" 
    android:layout_marginEnd="26dp" 
    android:layout_above="@+id/requirements"> 
</ListView> 

<TextView 
    android:id="@+id/current_title" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginTop="65dp" 
    android:text="Current Title: Novice" 
    android:textSize="24sp" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true"/> 

<ListView 
    android:id="@+id/locked_titles_list" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:layout_alignStart="@+id/requirements" 
    android:layout_marginStart="28dp" 
    android:layout_above="@+id/requirements" 
    android:layout_below="@+id/current_title"/> 

<TextView 
    android:id="@+id/requirements" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginBottom="34dp" 
    android:text="temp" 
    android:textAlignment="center" 
    android:textSize="24sp" 
    android:layout_alignParentBottom="true" 
    android:layout_centerHorizontal="true"/> 

</RelativeLayout> 

activity_listview.xml wie die einzelnen Reihen der Listviews

verwendet
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/label" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:padding="10dip" 
     android:textSize="16dip" 
     android:textStyle="bold" > 
</TextView> 

Antwort

0

Sie haben Ihre layout_width Eigenschaften wrap_content gesetzt. Dies bedeutet, dass sie sich ändern können, wenn sich die Daten ändern. Ich würde empfehlen, Ihre ListView s in eine LinearLayout mit orientation:horizontal setzen und die Menge an Platz, die jedes Element mit layout_weight nimmt. Hier ist eine relevante Frage SO What does android:layout_weight mean?

+0

Ich möchte es wirklich in RelativeLayout behalten. Gibt es eine andere Art und Weise? –

4

Die Probleme mit Layout von Scroll verursacht werden könnte, die Wrapper

Ich stolperte über einige Notiz in http://developer.android.com/reference/android/widget/ExpandableListView.html

“zu sein ... Hinweis: Sie nicht den Wert verwenden können wrap_content für das Attribut android: layout_height einer ExpandableListView in XML, wenn auch die Größe der Eltern nicht genau angegeben ist (wenn zum Beispiel ScrollView übergeordnet war, konnte wrap_content nicht angegeben werden, da sie auch eine beliebige Länge haben kann. Allerdings können Sie wrap_content verwenden Das Elternelement ExpandableListView hat eine bestimmte Größe, z. B. 100 Pixel. "

Ich habe die Verpackung entfernt ScrollView und das lineare Layout haben richtig funktioniert. Jetzt ist es nur zu verstehen, wie man das Zeug in ScrollView einpackt. Gott hilf mir

Aber trotzdem ist das wirklich seltsames Verhalten. Ich denke, dass fill_parent nicht wirklich korrekt formuliert ist.Bei Verwendung des hierarchyviewer-Tools sehe ich immer die Werte WRAP_CONTENT und MATCH_PARENT für layout_width und leayout_height. Also wahrscheinlich ist fill_parent eigentlich match_parent, was mich in kognitive Dissonanz versetzt.

Verwandte Themen