2010-12-13 2 views
0

Ich habe ein Problem mit meinem Layout im Hoch-/Querformat angezeigt wird. Die Hierarchie meines Layouts sieht im Wesentlichen so aus: Main (Workspace-Ansicht) -> TextView + Listview (mit BaseAdapter) -> Listview Item.Ich habe ein Problem mit Layout-Cutoff/Offset in meiner Ansicht

Mein Problem ist, wenn ich im Hochformat-Modus starte, werden meine Artikel korrekt angezeigt, wie sie sollten. Aber wenn ich dann das Gerät rotiere, passiert, dass mein gesamtes Layout um etwa einen halben Bildschirm verschoben wird (dh wenn ich umschalte, ist etwa die Hälfte der linken Seite des Views komplett schwarz und er denkt, dass meine "linke Kante" ist) in der Mitte des Bildschirms - ich kann die Gegenstände sehen, die in der Mitte links ausgerichtet sein sollen). Auf der anderen Seite, wenn ich im Querformat starte und in den Hochformat-Modus umschalte, ist die Hälfte der rechten Seite des Bildschirms komplett schwarz und die "rechte Kante" ist in der Mitte und ich kann meine am weitesten rechts stehenden Objekte sehen.

Hier ist das Layout Ich bin mit ... Zuerst meiner Ansicht im Arbeitsbereich arbeiten (Listview verwendet eine BaseAdapter):

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

    <TextView android:id="@+id/tvMainChannel" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center" 
     android:text="Disconnected" 
     android:textColor="#FFFFFF" 
     android:singleLine="true"/> 

    <ListView android:id="@android:id/list" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content"/> 
</LinearLayout> 

Und hier ist mein individuelle Listenansicht Artikel, die in die oben aufgeblasen Listview (in horizontaler Anordnung sollte jedes Element von links nach rechts angezeigt werden: Bild, Text, Bild):

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_height="wrap_content" 
    android:layout_width="fill_parent" 
    android:orientation="horizontal"> 

    <ImageView android:id="@+id/images" 
     android:layout_height="30dp" 
     android:layout_width="wrap_content" 
     android:paddingLeft="5px" 
     android:paddingRight="5px" 
     android:layout_alignParentLeft="true"/> 

    <ImageView android:id="@+id/images_ping" 
     android:layout_height="30dp" 
     android:layout_width="wrap_content" 
     android:paddingLeft="5px" 
     android:paddingRight="5px" 
     android:layout_alignParentRight="true"/> 

    <TextView android:id="@+id/text" 
     android:layout_height="30dp" 
     android:layout_width="wrap_content" 
     android:gravity="center_vertical" 
     android:text="Username" 
     android:textColor="#FFFFFF" 
     android:layout_toRightOf="@+id/images"/> 

</RelativeLayout> 

ich habe versucht, die Dinge um zwischen Linear und Relative Schalt, aber ich habe keine wo bekommen .. .mit dem Verlust, was t sein könnte er Grund dafür.

Jeder Einblick wird sehr geschätzt.

Danke!

EDIT: Für ein wenig mehr Klarheit, das ist meine main.xml Datei, den Workspace verwendet:

<?xml version="1.0" encoding="utf-8"?> 
<com.test.MultiView xmlns:app="http://schemas.android.com/apk/res/com.test" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/mvMain" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    app:default_screen="0"> 

    <include android:id="@+id/main_rtb" layout="@layout/main_rtb" /> 
    <include android:id="@+id/main_listview" layout="@layout/main_listview" /> 
</com.test.MultiView> 

Antwort

1

aktualisiert

Die eigentliche Antwort auf diese Frage gab ein Problem mit einem Benutzerdefinierte Top-Level-Layout-Komponente, ursprünglich aus der Frage weggelassen, und die von einem Thread anderswo Stackoverflow angepasst wurde. Siehe Kommentare zu dieser Antwort für Details.

Original-Antwort (völlig falsch, aber nicht völlig nutzlos)

Problem muss in Ihrem Artikel Layout sein. Vorschlagen, mit Hilfe eines Linearlayout (die ‚Orientierung‘ Attribut ist nicht gültig für RelativeLayout) wie folgt aus:

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

    <ImageView android:id="@+id/images" 
     android:layout_height="30dp" 
     android:layout_width="wrap_content" 
     android:paddingLeft="5px" 
     android:paddingRight="5px" 
     /> 


    <TextView android:id="@+id/text" 
     android:layout_height="30dp" 
     android:layout_width="wrap_content" 
     android:layout_weight="1" 
     android:gravity="center_vertical" 
     android:text="Username" 
     android:textColor="#FFFFFF" 
     /> 

    <ImageView android:id="@+id/images_ping" 
     android:layout_height="30dp" 
     android:layout_width="wrap_content" 
     android:paddingLeft="5px" 
     android:paddingRight="5px" 
     /> 

</LinearLayout> 

Beachten Sie die Verwendung von android:layout_weight und die Entfernung von RelativeLayout -spezifische android:layout_alignParentLeft und android:layout_alignParentRight Attribute.

+0

Schätzen Sie die Antwort. Das scheint nicht zu funktionieren. Die TextView (@ + ID/tvMainChannel) und ListView (@ Android: ID/Liste) sind immer noch auf der X-Achse versetzt und beginnen bei der scheinbar genau die Breite der Hochformatansicht beginnend am rechten Rand des Bildschirms nach links gehen (dh Start x = rechter Rand in Querformat - Hochformat). – BCS

+0

Oh, ich verstehe. Was ist Ihr Android: screenOrientation in Ihrer Manifest-Datei festgelegt? –

+0

Es gibt keinen Satz in meiner Manifestdatei. Allerdings benutze ich android: configChanges = "keyboardHidden | orientation", um meine Aktivität vor Zerstörung auf dem Bildschirm Rotation überschreiben – BCS