Android GUI выглядит иначе при использовании полей и отступов - PullRequest
1 голос
/ 09 января 2020

Я новичок в Android, но мой вопрос требует немного знаний в пользовательском интерфейсе, а не в программировании. У меня есть xml код, у меня есть некоторые мнения, но для этого вопроса важны только два компонента. Компонентом является ScrollView"отец", у которого есть только один "сын", который является TextView . При настройке padding в ScrollView, если текст внутри TextView длинный, первая строка TextView немного усекается (хотя я использую заполнение). Но с другой стороны , при использовании margin_layout текст виден нормально. Я много читал о разнице между margin и padding и из того, что я понимаю, настройка padding внутри папа должна давать такой же эффект как установка margin внутри сына. Я подчеркиваю, что я использую только одного сына. Код с полем (там, где текст в порядке):

  <?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:background="@color/colorPrimary"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="76dp"
        android:layout_marginEnd="8dp"
        android:fontFamily="@font/chewy"
        android:text="@string/title"
        android:textSize="36sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <android.support.v7.widget.CardView
        android:id="@+id/cardView"
        android:layout_width="300dp"
        android:layout_height="80dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="68dp"
        android:layout_marginEnd="8dp"
        app:cardCornerRadius="5dp"
        app:cardElevation="7dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView">


        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            >
        <TextView
            android:id="@+id/question_textview"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:layout_margin="8dp"
            android:text="Hello There this is where we are going to add something..."
            android:textSize="18sp" />
        </ScrollView>
    </android.support.v7.widget.CardView>

    <Button
        android:id="@+id/true_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="48dp"
        android:layout_marginTop="8dp"
        android:background="@color/colorAccent"
        android:text="@string/true_title"
        app:layout_constraintStart_toEndOf="@+id/prev_button"
        app:layout_constraintTop_toBottomOf="@+id/cardView" />

    <Button
        android:id="@+id/false_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="8dp"
        android:background="@color/colorAccent"
        android:text="@string/false_title"
        app:layout_constraintEnd_toStartOf="@+id/next_button"
        app:layout_constraintStart_toEndOf="@+id/true_button"
        app:layout_constraintTop_toBottomOf="@+id/cardView" />

    <ImageButton
        android:id="@+id/prev_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:background="@color/colorAccent"
        android:contentDescription="@string/previous_button"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/cardView"
        app:srcCompat="@android:drawable/ic_media_previous" />

    <ImageButton
        android:id="@+id/next_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="8dp"
        android:background="@color/colorAccent"
        android:contentDescription="@string/next_button"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/cardView"
        app:srcCompat="@android:drawable/ic_media_next" />

    <TextView
        android:id="@+id/counter_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginBottom="8dp"
        android:fontFamily="@font/chewy"
        android:text="@string/counter_questions"
        app:layout_constraintBottom_toTopOf="@+id/cardView"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView" />


</android.support.constraint.ConstraintLayout>

Код с отступом (первая строка усекается)

 <?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:background="@color/colorPrimary"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="76dp"
        android:layout_marginEnd="8dp"
        android:fontFamily="@font/chewy"
        android:text="@string/title"
        android:textSize="36sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <android.support.v7.widget.CardView
        android:id="@+id/cardView"
        android:layout_width="300dp"
        android:layout_height="80dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="68dp"
        android:layout_marginEnd="8dp"
        app:cardCornerRadius="5dp"
        app:cardElevation="7dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView">


        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:padding="8dp"
            >
        <TextView
            android:id="@+id/question_textview"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:text="Hello There this is where we are going to add something..."
            android:textSize="18sp" />
        </ScrollView>
    </android.support.v7.widget.CardView>

    <Button
        android:id="@+id/true_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="48dp"
        android:layout_marginTop="8dp"
        android:background="@color/colorAccent"
        android:text="@string/true_title"
        app:layout_constraintStart_toEndOf="@+id/prev_button"
        app:layout_constraintTop_toBottomOf="@+id/cardView" />

    <Button
        android:id="@+id/false_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="8dp"
        android:background="@color/colorAccent"
        android:text="@string/false_title"
        app:layout_constraintEnd_toStartOf="@+id/next_button"
        app:layout_constraintStart_toEndOf="@+id/true_button"
        app:layout_constraintTop_toBottomOf="@+id/cardView" />

    <ImageButton
        android:id="@+id/prev_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:background="@color/colorAccent"
        android:contentDescription="@string/previous_button"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/cardView"
        app:srcCompat="@android:drawable/ic_media_previous" />

    <ImageButton
        android:id="@+id/next_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="8dp"
        android:background="@color/colorAccent"
        android:contentDescription="@string/next_button"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/cardView"
        app:srcCompat="@android:drawable/ic_media_next" />

    <TextView
        android:id="@+id/counter_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginBottom="8dp"
        android:fontFamily="@font/chewy"
        android:text="@string/counter_questions"
        app:layout_constraintBottom_toTopOf="@+id/cardView"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView" />


</android.support.constraint.ConstraintLayout>

Кроме того, размещение отступов внутри CardLayout делает их ровными хуже, чем при добавлении отступов внутри ScrollView

Может кто-нибудь объяснить мне причину?

1 Ответ

0 голосов
/ 09 января 2020

Кажется, что разница связана с ScrollView странным поведением. Я исправил проблему, установив android: fillViewport = "true" и удалив padding и margin_layout

...