Problem beim Anpassen der Höhe und Breite eines Scrollview

  • Antworten:3
Draz
  • Forum-Beiträge: 6

11.08.2019, 15:39:21 via Website

Hallo,
Ich habe ein Problem beim Anpassen der Höhe und Breite eines Scrollview.
Das Scrollview enthält mehrere Buttons.
Beim Testen auf einem Pixel 3 XL Emulator passen die Maße. Wenn ich jedoch meine App auf einem Pixel 2 teste sind die Buttons zu groß und die letzten beiden werden von der Navigationsleiste überdeckt.

Hier ist der XML Code:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout

android:id="@+id/constraintLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">

<ImageView
    android:id="@+id/imageView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:scaleType="centerCrop"
    android:src="@drawable/background"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

<ScrollView
    android:id="@+id/scrollView2"
    android:layout_width="wrap_content"
    android:layout_height="723dp"
    android:layout_marginEnd="16dp"
    android:fillViewport="true"
    app:layout_constraintBottom_toTopOf="@+id/imageView"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.0">

    <android.support.constraint.ConstraintLayout
        android:id="@+id/relativeLayout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp">

        <Button
            android:id="@+id/button1"
            android:layout_width="@dimen/button_width"
            android:layout_height="wrap_content"
            android:layout_marginStart="15dp"
            android:layout_marginEnd="8dp"
            android:layout_marginBottom="455dp"
            android:background="@drawable/buttonshape"
            android:shadowDx="0"
            android:shadowDy="0"
            android:shadowRadius="5"
            android:text="Button"
            android:textColor="@color/Black"
            android:textSize="18sp"
            app:layout_constraintBottom_toTopOf="@+id/button"
            app:layout_constraintEnd_toStartOf="@+id/guideline3"
            app:layout_constraintHorizontal_bias="0.0"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.0" />

        <Button
            android:id="@+id/button2"
            android:layout_width="@dimen/button_width"
            android:layout_height="@dimen/button_height"
            android:layout_marginStart="12dp"
            android:background="@drawable/buttonshape"
            android:shadowDx="0"
            android:shadowDy="0"
            android:shadowRadius="5"
            android:text="Button"
            android:textColor="@color/Black"
            android:textSize="18sp"
            app:layout_constraintStart_toStartOf="@+id/guideline3"
            app:layout_constraintTop_toTopOf="parent" />

        <Button
            android:id="@+id/button3"
            android:layout_width="@dimen/button_width"
            android:layout_height="@dimen/button_height"
            android:layout_marginStart="12dp"
            android:layout_marginTop="84dp"
            android:layout_marginEnd="8dp"
            android:background="@drawable/buttonshape"
            android:shadowDx="0"
            android:shadowDy="0"
            android:shadowRadius="5"
            android:text="Button"
            android:textColor="@color/Black"
            android:textSize="18sp"
            app:layout_constraintEnd_toStartOf="@+id/guideline3"
            app:layout_constraintHorizontal_bias="0.285"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <Button
            android:id="@+id/button4"
            android:layout_width="@dimen/button_width"
            android:layout_height="@dimen/button_height"
            android:layout_marginStart="12dp"
            android:layout_marginTop="84dp"
            android:background="@drawable/buttonshape"
            android:shadowDx="0"
            android:shadowDy="0"
            android:shadowRadius="5"
            android:text="Button"
            android:textColor="@color/Black"
            android:textSize="18sp"
            app:layout_constraintStart_toStartOf="@+id/guideline3"
            app:layout_constraintTop_toTopOf="parent" />

        <Button
            android:id="@+id/button5"
            android:layout_width="@dimen/button_width"
            android:layout_height="@dimen/button_height"
            android:layout_marginStart="8dp"
            android:layout_marginTop="168dp"
            android:layout_marginEnd="8dp"
            android:background="@drawable/buttonshape"
            android:shadowDx="0"
            android:shadowDy="0"
            android:shadowRadius="5"
            android:text="Button"
            android:textColor="@color/Black"
            android:textSize="18sp"
            app:layout_constraintEnd_toStartOf="@+id/guideline3"
            app:layout_constraintHorizontal_bias="0.666"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <Button
            android:id="@+id/button6"
            android:layout_width="@dimen/button_width"
            android:layout_height="@dimen/button_height"
            android:layout_marginStart="12dp"
            android:layout_marginTop="168dp"
            android:background="@drawable/buttonshape"
            android:shadowDx="0"
            android:shadowDy="0"
            android:shadowRadius="5"
            android:text="Button"
            android:textColor="@color/Black"
            android:textSize="18sp"
            app:layout_constraintStart_toStartOf="@+id/guideline3"
            app:layout_constraintTop_toTopOf="parent" />

        <Button
            android:id="@+id/button7"
            android:layout_width="@dimen/button_width"
            android:layout_height="@dimen/button_height"
            android:layout_marginStart="16dp"
            android:layout_marginTop="252dp"
            android:layout_marginEnd="8dp"
            android:background="@drawable/buttonshape"
            android:shadowDx="0"
            android:shadowDy="0"
            android:shadowRadius="5"
            android:text="Button"
            android:textColor="@color/Black"
            android:textSize="18sp"
            app:layout_constraintEnd_toStartOf="@+id/guideline3"
            app:layout_constraintHorizontal_bias="0.0"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <Button
            android:id="@+id/button8"
            android:layout_width="@dimen/button_width"
            android:layout_height="@dimen/button_height"
            android:layout_marginStart="12dp"
            android:layout_marginTop="252dp"
            android:background="@drawable/buttonshape"
            android:shadowDx="0"
            android:shadowDy="0"
            android:shadowRadius="5"
            android:text="Button"
            android:textColor="@color/Black"
            android:textSize="18sp"
            app:layout_constraintStart_toStartOf="@+id/guideline3"
            app:layout_constraintTop_toTopOf="parent" />

        <Button
            android:id="@+id/button9"
            android:layout_width="@dimen/button_width"
            android:layout_height="@dimen/button_height"
            android:layout_marginStart="16dp"
            android:layout_marginTop="340dp"
            android:layout_marginEnd="8dp"
            android:background="@drawable/buttonshape"
            android:shadowDx="0"
            android:shadowDy="0"
            android:shadowRadius="5"
            android:text="Button"
            android:textColor="@color/Black"
            android:textSize="18sp"
            app:layout_constraintEnd_toStartOf="@+id/guideline3"
            app:layout_constraintHorizontal_bias="0.0"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <Button
            android:id="@+id/button10"
            android:layout_width="@dimen/button_width"
            android:layout_height="@dimen/button_height"
            android:layout_marginStart="12dp"
            android:layout_marginTop="340dp"
            android:background="@drawable/buttonshape"
            android:shadowDx="0"
            android:shadowDy="0"
            android:shadowRadius="5"
            android:text="Button"
            android:textColor="@color/Black"
            android:textSize="18sp"
            app:layout_constraintStart_toStartOf="@+id/guideline3"
            app:layout_constraintTop_toTopOf="parent" />

        <Button
            android:id="@+id/button11"
            android:layout_width="@dimen/button_width"
            android:layout_height="@dimen/button_height"
            android:layout_marginStart="8dp"
            android:layout_marginTop="420dp"
            android:layout_marginEnd="8dp"
            android:background="@drawable/buttonshape"
            android:shadowDx="0"
            android:shadowDy="0"
            android:shadowRadius="5"
            android:text="Button"
            android:textColor="@color/Black"
            android:textSize="18sp"
            app:layout_constraintEnd_toStartOf="@+id/guideline3"
            app:layout_constraintHorizontal_bias="0.666"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <Button
            android:id="@+id/button12"
            android:layout_width="@dimen/button_width"
            android:layout_height="@dimen/button_height"
            android:layout_marginStart="12dp"
            android:layout_marginTop="420dp"
            android:background="@drawable/buttonshape"
            android:shadowDx="0"
            android:shadowDy="0"
            android:shadowRadius="5"
            android:text="Button"
            android:textColor="@color/Black"
            android:textSize="18sp"
            app:layout_constraintStart_toStartOf="@+id/guideline3"
            app:layout_constraintTop_toTopOf="parent" />

        <Button
            android:id="@+id/button13"
            android:layout_width="@dimen/button_width"
            android:layout_height="@dimen/button_height"
            android:layout_marginStart="16dp"
            android:layout_marginTop="504dp"
            android:layout_marginEnd="8dp"
            android:background="@drawable/buttonshape"
            android:shadowDx="0"
            android:shadowDy="0"
            android:shadowRadius="5"
            android:text="Button"
            android:textColor="@color/Black"
            android:textSize="18sp"
            app:layout_constraintEnd_toStartOf="@+id/guideline3"
            app:layout_constraintHorizontal_bias="0.0"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <Button
            android:id="@+id/button14"
            android:layout_width="@dimen/button_width"
            android:layout_height="@dimen/button_height"
            android:layout_marginStart="12dp"
            android:layout_marginTop="504dp"
            android:background="@drawable/buttonshape"
            android:shadowDx="0"
            android:shadowDy="0"
            android:shadowRadius="5"
            android:text="Button"
            android:textColor="@color/Black"
            android:textSize="18sp"
            app:layout_constraintStart_toStartOf="@+id/guideline3"
            app:layout_constraintTop_toTopOf="parent" />

        <android.support.constraint.Guideline
            android:id="@+id/guideline3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            app:layout_constraintGuide_begin="196dp" />

        <Button
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="80dp"
            android:backgroundTint="@color/DarkGrey"
            android:text="Button"
            android:textColor="@color/white"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.531"
            app:layout_constraintStart_toStartOf="parent" />

    </android.support.constraint.ConstraintLayout>
</ScrollView>


</android.support.constraint.ConstraintLayout>
Kommentieren
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

11.08.2019, 15:47:34 via Website

Hallo draz,
wie hast du denn deine Buttonhöhe und breite in den dimen definiert?
Also was ist in @dimen/button_width hinterlegt?

Schon mal überlegt das constraint layout passend zu nutzen, anstatt festgelegten margins für bot/top/left?
app:layout_constraintStart_toStartOf="parent" - als hier das "vorherige" Element angeben etc.?
Akutell sagst du dem Layout, "docke" den Button toStartOfParent also ganz oben an, und dann setzt du wieder ein MarginTop, das das ganze nach unten schiebt.
Wenn du das so machen willst, nimm wirklich lieber andere Layouts. Das macht das Layouten wesentlich einfacher

Oder gleich ein Linear bzw Relative layout nutzen?

Edit: bei einer ScrollView eine feste höhe anzugeben ( android:layout_height="723dp") wenn di bis zum Bottom gehen soll ist i.d.r eine schlechte Idee.
Lieber mit mindeströße und fill oder match parent arbeiten

— geändert am 11.08.2019, 15:52:04

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
Kommentieren
Draz
  • Forum-Beiträge: 6

11.08.2019, 16:01:23 via Website

Pascal P.

Hallo draz,
wie hast du denn deine Buttonhöhe und breite in den dimen definiert?
Also was ist in @dimen/button_width hinterlegt?

In der dimen Datei ist folgendes hinterlegt

   <?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="button_height">70dp</dimen>
    <dimen name="button_width">168dp</dimen>
</resources>
Hilfreich?
Kommentieren
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

11.08.2019, 16:05:33 via Website

Hmm die Buttons sollten passen, schau mal ob du die ScrollView umstellen kannst, dass diese immer bis zum Parent_Bottom geht

— geändert am 11.08.2019, 16:05:39

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
Kommentieren