2010-12-21 4 views
0

Ich habe ein Layout, das wie folgt aussieht wie unten. Mein Problem ist, dass auf kleinen Bildschirmen die Schaltfläche am unteren Rand der Ansicht für den Benutzer aus der Ansicht geschoben wird. Ich dachte, ich könnte dies leicht beheben, indem ich das gesamte Layout in eine ScrollView-Datei hüllte, aber ich habe inzwischen gelernt, dass dies keine praktikable Lösung ist, da ein ListView in meinem Layout vorhanden ist.Brauchen Sie Eingabe, wie das Layout für kleine Bildschirme zu verbessern

Also, irgendwelche Vorschläge, wie man dieses Layout ändert? Mein Hauptproblem ist wirklich, dass ich einen Adapter an die ListView angeschlossen habe, und ich bin mir nicht sicher, ob ich das Layout wiederholen und den Adapter verwenden kann. Gedanken an jemanden?

Grüße Daniel

BTW, Heres mein Layout:

<?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" 
    style="@style/defaultBackground" 
    > 
    <LinearLayout 
     android:layout_height="wrap_content" 
     android:layout_width="fill_parent" 
     android:orientation="horizontal" 
     android:paddingBottom="10dip" 
     > 
     <TextView 
      android:id="@+id/roundInfo" 
      android:layout_width="wrap_content" 
      android:layout_height="20dip" android:textColor="#000" 
      /> 
     <TextView 
      android:id="@+id/balance" 
      android:layout_width="fill_parent" 
      android:layout_height="20dip" 
      android:gravity="right" 
      android:textColor="#000" 
      /> 
    </LinearLayout> 

    <ListView 
     android:id="@android:id/list" 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="fill_parent" 
     android:textSize="10sp" 
     android:layout_height="fill_parent" 
     android:layout_weight="1" 
     android:listSelector="@drawable/custom_row" 
     android:background="@drawable/custom_listview" 
     android:dividerHeight="0dip" 
     android:cacheColorHint="#FFFFFF" 
     android:fadingEdge="none" 
     android:divider="#FFFFFF" 
     /> 
    <TextView 
     android:id="@+id/gameCost" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/gameCost_not_finished" 
     android:textColor="#000" \ 
     android:paddingTop="10dip" 
     /> 
    <Button 
     android:id="@+id/update_button" 
     android:text="@string/placebet_button" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     style="@style/whiteText" 
     android:background="@drawable/custom_button" 
     /> 
</LinearLayout> 

Antwort

0

Für diese Art von Situation, sollten Sie eine RelativeLayout anstelle eines Linearlayout verwenden. Probieren Sie etwas wie folgt aus:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    style="@style/defaultBackground" 
    > 
    <LinearLayout 
     android:id="@+id/header" 
     android:layout_height="wrap_content" 
     android:layout_width="fill_parent" 
     android:layout_alignParentTop="true" 
     android:orientation="horizontal" 
     android:paddingBottom="10dip" 
     > 
     <TextView 
      android:id="@+id/roundInfo" 
      android:layout_width="wrap_content" 
      android:layout_height="20dip" android:textColor="#000" 
      /> 
     <TextView 
      android:id="@+id/balance" 
      android:layout_width="fill_parent" 
      android:layout_height="20dip" 
      android:gravity="right" 
      android:textColor="#000" 
      /> 
    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/footer" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:orientation="vertical" 
     > 
     <TextView 
      android:id="@+id/gameCost" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:text="@string/gameCost_not_finished" 
      android:textColor="#000" 
      android:paddingTop="10dip" 
      /> 
     <Button 
      android:id="@+id/update_button" 
      android:text="@string/placebet_button" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      style="@style/whiteText" 
      android:background="@drawable/custom_button" 
      /> 
    </LinearLayout> 

    <ListView 
     android:id="@android:id/list" 
     android:layout_width="fill_parent" 
     android:textSize="10sp" 
     android:layout_height="fill_parent" 
     android:layout_above="@id/footer" 
     android:layout_below="@id/header" 
     android:listSelector="@drawable/custom_row" 
     android:background="@drawable/custom_listview" 
     android:dividerHeight="0dip" 
     android:cacheColorHint="#FFFFFF" 
     android:fadingEdge="none" 
     android:divider="#FFFFFF" 
     /> 
</RelativeLayout> 

Grundsätzlich ändern Sie Ihre Wurzel-Layout einer RelativeLayout, und trennen Sie Ihre Inhalte in drei Bereiche: Header, Body, Footer. Behalten Sie den Header so, wie er ist, in der horizontalen LinearLayout und legen Sie ihn auf alignParentTop fest. Da es nur auf wrap_content gesetzt ist, müssen wir uns nicht um Gewichte oder irgendetwas kümmern. Platzieren Sie dann die anderen festen Elemente, die sich unten befinden sollten (der text "GameCost" und die Schaltfläche "placeBet"), in ein vertikales LinearLayout, das als Fußzeile dient. Setzen Sie es auf alignParentBottom. Deklarieren Sie schließlich Ihr ListView mit einer Höhe von fill_parent. Dies nimmt den verbleibenden Platz ein, aber um es innerhalb der Grenzen Ihrer Kopf- und Fußzeile zu halten, fügen wir die Parameter layout_above und layout_below hinzu. Hoffe das hilft!

+0

Vielen Dank für Ihre Antwort! Ich frage mich, ob ich etwas tun kann, wenn meine Benutzer glauben, dass der ListView bei Verwendung der RelativeLayout-Lösung zu klein ist? – Daniel

+0

Anders als die Größe der anderen Objekte auf dem Bildschirm zu reduzieren (oder jedes Listenelement kleiner zu machen), könnten Sie eine Schaltfläche haben, die die Liste als separate Aktivität öffnet, oder einfach nur ein Spinner verwenden, abhängig von der Art der Daten . – kcoppock