2010-12-17 7 views
12

Ich habe ein Problem mit meiner Anwendung. Ich habe kürzlich ScrollView als Parent von LinearLayout hinzugefügt. Wenn ich meine Geräteausrichtung auf Querformat umstelle, werden meine Tasten oben abgeschnitten. Ich kann den letzten Knopf gut sehen mit extra "schwarzem Raum" am Ende davon, wenn ich runterscrolle, nur das obere wird abgeschnitten. Ich schaute mich um und ich bin mir nicht sicher, warum das passiert. Hier sind ein paar Bilder, damit Sie verstehen können, wie es aussieht.Android Landscape-Modus abschneiden meine Tasten an der Spitze

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_gravity="center" 
    android:gravity="center_vertical"> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_gravity="center"> 
    <Button 
     android:id="@+id/BeefButton" 
     android:layout_height="wrap_content" 
     android:layout_width="match_parent" 
     android:layout_gravity="center" 
     android:background="@drawable/backgroundlayer" 
     android:drawableLeft="@drawable/beefbutton" 
     android:text="Beef" 
     android:textColor="#FFFFFF" 
     android:textSize="32px" 
     android:textColorHighlight="#FF6600"/> 
    <Button 
     android:id="@+id/PoultryButton" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:layout_width="match_parent" 
     android:background="@drawable/backgroundlayer" 
     android:drawableLeft="@drawable/chickenbutton" 
     android:text="Poultry" 
     android:textColor="#FFFFFF" 
     android:textSize="32px"   
     android:textColorHighlight="#FF6600"/> 
    <Button 
     android:id="@+id/FishButton" 
     android:layout_height="wrap_content" 
     android:background="@drawable/backgroundlayer" 
     android:drawableLeft="@drawable/fishbutton" 
     android:text="Fish" 
     android:textColor="#FFFFFF" 
     android:textSize="32px" 
     android:textColorHighlight="#FF6600" 
     android:layout_gravity="center" 
     android:layout_width="match_parent"/> 
    <Button 
     android:id="@+id/PorkButton" 
     android:layout_height="wrap_content" 
     android:background="@drawable/backgroundlayer" 
     android:drawableLeft="@drawable/porkbutton" 
     android:text="Pork" 
     android:textColor="#FFFFFF" 
     android:textSize="32px" 
     android:textColorHighlight="#FF6600" 
     android:layout_gravity="center" 
     android:layout_width="match_parent"/> 
    <Button 
     android:id="@+id/VegetablesButton" 
     android:layout_height="wrap_content" 
     android:background="@drawable/backgroundlayer" 
     android:drawableLeft="@drawable/vegetablesbutton" 
     android:text="Vegetables" 
     android:textColor="#FFFFFF" 
     android:textSize="32px" 
     android:textColorHighlight="#FF6600" 
     android:layout_gravity="center" 
     android:layout_width="match_parent"/> 
</LinearLayout> 
</ScrollView> 
+0

posten Bitte Ihr Layout . Sie haben das gleiche für Hoch- und Querformat? –

+0

Gibt es auch einen Grund, warum Sie kein ListView verwenden, im Gegensatz zu einem LinearLayout mit einem ScrollView? Sind Ihre Listenelemente immer genau gleich, und nur 5 von ihnen? –

+0

Ja, sie sind genau die gleiche Art, nur fünf Artikel – SickNick

Antwort

19

die android:layout_gravity="center" auf Linearlayout entfernen, wenn Sie es in dem Querformat der Höhe des Scroll ändern ist größer als Ihre Bildschirmgröße, so dass sie das Linearlayouts in der Scroll Zentrierung, obwohl das Entfernen es nicht die Lösung sein kann , das ist, was ist der Grund dafür,

Sie Ihr Layout betrachten kann revidieren, könnte es mehr Sinn zu verwenden, um eine Listenansicht in der Lage sein, um erfolgreich zu unterstützen Landschaft

+1

Es gibt keine Möglichkeit, meine Artikel so in der Mitte aufgeführt zu haben. :-( – SickNick

+0

Sie können "layout_gravity =" center "" auf Ihrem ScrollView hinzufügen und es haben wrap_content. Dies wird dazu führen, dass die Ansicht in der Mitte des Containers ist, wenn genug Platz ist und scrollen, wenn nicht. – Graeme

2

ich weiß, das ist ein alter Thread, aber ich verbrachte machen zwei Tage zu diesem Problem. Während das Entfernen der "layout_gravity" -Anweisung das abgeschnittene Problem behebt, ist der Kommentar, dass es nicht zentriert werden kann, ebenfalls wahr. Am Ende funktionierte für mich, was meiner Meinung nach ein Hack ist, dass der Scrollview auf einem Layout zentriert und ZWEI Linearlayouts als Kinder kaskadiert wurden. Auch die Höhe und Breite musste in den Scrollview und Linearlayouts gepackt werden. Dies ist nicht die sauberste Lösung, aber ich habe alles ohne Erfolg versucht, einschließlich der Einstellung der Schwerkraft in Code mit setlayoutparams, wenn die Objekte weniger als die Bildschirmgröße hatten. Ich hoffe, das hilft jemandem.

0

Der Hinweis (Entfernen android:layout_gravity="center"), dass @slim sagte funktioniert, aber ohne zentrale Ausrichtung.

Meine Lösung:

ich es behoben, indem der Haupt lange Layout mit einem LinearLayout mit seinem gravity Satz center Einwickeln und android:layout_gravity="center" für das Hauptlayout bleiben lassen:

<ScrollView 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      > 
     <LinearLayout 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:gravity="center"> 

      <!-- .... the main long layout ... --> 

     </LinearLayout> 

</ScrollView> 
Verwandte Themen