2017-11-18 2 views
0

Ich habe hier und andere Websites für die letzte Stunde gesucht, um herauszufinden, was ich falsch mache. Wie der Titel andeutet, brauche ich eine Kopfzeile mit Schaltflächen, eine Bildlaufleiste und dann eine Fußzeile mit Schaltflächen. Ich möchte, dass sowohl die Kopf- als auch die Fußzeile immer sichtbar sind. Alles, was gefunden wird, sagt, um eine relative Layout zu machen, richtet es auf die Elternoberseite aus, erstellt eine Fußzeile, richtet sie auf den Elternboden aus und erstellt dann eine Scrollansicht über der Fußzeile und unter der Kopfzeile. Aus irgendeinem Grund entscheidet mein Code einfach, dies zu ignorieren.Brauchen Sie eine Kopfzeile, Fußzeile und ScrollView dazwischen. Der aktuelle Code funktioniert nicht

<RelativeLayout 
    android:id="@+id/topBar_id" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:background="@color/colorBackground"> 

    <Button 
     android:id="@+id/charInfoBtn_id" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="General" 
     app:layout_constraintTop_toTopOf="parent" 
     app:layout_constraintStart_toStartOf="parent"/> 

</RelativeLayout> 

<ScrollView 
    android:id="@+id/genLayoutScroll_id" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_above="@id/bottomBar_id" 
    android:layout_below="@id/topBar_id> 

    <LinearLayout 
     //bunch of junk that users scroll through 
    </LinearLayout> 

</ScrollView> 

<RelativeLayout 
    android:id="@+id/bottomBar_id" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    app:layout_constraintEnd_toEndOf="parent" 
    app:layout_constraintBottom_toBottomOf="parent" 
    android:background="@color/colorBackground"> 

    <Button 
     android:id="@+id/genApplyBtn_id" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Apply" 
     app:layout_constraintBottom_toBottomOf="parent" 
     app:layout_constraintEnd_toEndOf="parent" /> 

</RelativeLayout> 

Mit diesem als meine aktuellen Code, setzt sich die Scrollview auf sowohl der oberen Leiste und der unteren Leiste.

Wenn ich die layout_above und layout_below Linien entfernen und ersetzen Sie es mit App: layout_constraintBottom_toTopOf = „@ id/bottomBar_id“ dann der Scrollview geht nicht mehr über meine untere Leiste, aber jetzt in die obere Leiste, und die Spitze der Scrollview fehlt.

Dann füge ich app an: layout_constraintTop_toBottomOf = "@ id/topBar_id" zur scrollview, und es geht zurück zu dem gleichen wie mit layout_below und layout_oben.

Ich bin sicher, dass ich hier etwas vermisse, ich kann einfach nicht herausfinden, was es ist, dass ich vermisse. Hoffentlich kann jemand auf den dummen Fehler hinweisen, den ich mache.

P.S. Ich weiß, dass ein Teil meines Codes gerade jetzt schlampig ist, hauptsächlich aufgrund der Tatsache, dass ich versucht habe, dieses Problem zu lösen.

Antwort

0

Die einfachste Möglichkeit, dies zu tun, ist bei weitem, verwenden Sie eine vertikale LinearLayout als Wurzel Ihrer Ansicht, und verwenden Sie das Konzept der "Layout-Gewicht", um das mittlere Element (ScrollView) füllen den Bildschirm.

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <Button 
     android:id="@+id/charInfoBtn_id" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="General"/> 

    <ScrollView 
     android:id="@+id/genLayoutScroll_id" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1"> 

     <!-- your contents here --> 

    </ScrollView> 

    <Button 
     android:id="@+id/genApplyBtn_id" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Apply"/> 

</LinearLayout> 

Wenn Sie mehrere Tasten in jedem Takt benötigen, können Sie diese in einer horizontalen LinearLayout wickeln.

Der Grund dafür ist das android:layout_weight="1" Attribut auf dem <ScrollView> Tag. Das Zuweisen von Gewicht zu einer einzelnen Ansicht wird dazu führen, dass es alle verbleibenden Platz einnimmt, nachdem die anderen Ansichten nehmen, was sie brauchen. Ihre Schaltflächen erhalten so viel Platz, wie sie möchten, und die Bildlaufansicht erhält den Rest. Da es in der Mitte ist, drückt dies notwendigerweise die untere Taste bis zum Ende des Bildschirms.

+0

Es war so einfach! Ich wusste, dass es sein musste. Ich danke dir sehr! – TheShinyGoombah

Verwandte Themen