Используйте относительную компоновку с компоновкой Scrollable Constraint для достижения эффекта стоп-кадра - PullRequest
0 голосов
/ 05 июня 2018

Я довольно новичок в Android Studio, поэтому, пожалуйста, простите все, что могло быть очевидным, но я не взял трубку.

Я хотел бы помочь в следующей ситуации -

Iнастроить два макета:

Относительный макет и макет ограничения (вложенный в ScrollView).

Я хотел, чтобы некоторые виды были видны постоянно, поэтому я поместил их вОтносительная компоновкаЯ помещаю все остальные виды в макет ограничения, который можно прокручивать, поскольку количество элементов не умещается на экране.

Я пытаюсь получить тот же эффект, который вы получаете, когда замораживаете верхний рядлист Excel.

Я пытался настроить свойство высоты макета в Ограничивающем макете, но, похоже, не могу понять, как оно правильно.То, что я хочу, это закрепить мою схему ограничений ниже Относительной схемы.

Я приложил свой код.

Заранее большое спасибо,

С уважением, Рави.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:id="@+id/relative_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.android.raviagl.netlandingcostcalculate.MainActivity">

    <TextView
        android:id="@+id/sap"
        android:layout_width="120dp"
        android:layout_height="72dp"
        android:layout_marginLeft="16dp"
        android:layout_toRightOf="@id/nlc"
        android:gravity="center_vertical"
        android:text="SAP"
        android:textColor="@color/colorPrimaryDark"
        android:textSize="20sp" />

    <Button
        android:id="@+id/reset_all"
        android:layout_width="120dp"
        android:layout_height="72dp"
        android:layout_alignParentEnd="true"
        android:layout_alignParentTop="true"
        android:layout_marginEnd="13dp"
        android:text="Reset" />

    <TextView
        android:id="@+id/nlc"
        android:layout_width="120dp"
        android:layout_height="72dp"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="8dp"
        android:gravity="center_vertical"
        android:text="NLC"
        android:textColor="@color/colorPrimaryDark"
        android:textSize="20sp" />

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <android.support.constraint.ConstraintLayout

            android:id="@+id/constraint_layout_main"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical"
            tools:layout_editor_absoluteY="81dp">


            <EditText
                android:id="@+id/dp"
                android:layout_width="175dp"
                android:layout_height="40dp"
                android:layout_marginEnd="16dp"
                android:layout_marginRight="16dp"
                android:layout_marginTop="88dp"
                android:ems="10"
                android:gravity="right"
                android:inputType="number"
                android:textColor="@color/colorPrimaryDark"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintTop_toTopOf="parent" />

            <EditText
                android:id="@+id/allowance"
                android:layout_width="175dp"
                android:layout_height="40dp"
                android:layout_marginRight="16dp"
                android:ems="10"
                android:gravity="right"
                android:inputType="number"
                android:textColor="@color/colorPrimaryDark"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/dp" />

            <EditText
                android:id="@+id/gst"
                android:layout_width="175dp"
                android:layout_height="40dp"
                android:layout_marginEnd="16dp"
                android:layout_marginRight="16dp"
                android:ems="10"
                android:gravity="right"
                android:inputType="number"
                android:textColor="@color/colorPrimaryDark"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/allowance" />

            <EditText
                android:id="@+id/slab"
                android:layout_width="175dp"
                android:layout_height="40dp"
                android:layout_marginEnd="16dp"
                android:layout_marginRight="16dp"
                android:ems="10"
                android:gravity="right"
                android:inputType="number"
                android:textColor="@color/colorPrimaryDark"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/gst" />

            <RadioGroup
                android:id="@+id/slab_radio_group"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_marginEnd="8dp"
                android:layout_marginStart="8dp"
                android:layout_marginTop="8dp"
                android:orientation="horizontal"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/slab">

                <RadioButton
                    android:id="@+id/radio_slab_value"
                    android:layout_width="170dp"
                    android:layout_height="31dp"
                    android:layout_marginRight="16dp"
                    android:layout_weight="1"
                    android:checked="true"
                    android:text="Use Fixed Amount"
                    android:textColor="@color/colorPrimaryDark"
                    android:textSize="14sp"
                    app:layout_constraintRight_toRightOf="parent"
                    tools:layout_editor_absoluteY="248dp" />

                <RadioButton
                    android:id="@+id/radio_slab_percent"
                    android:layout_width="170dp"
                    android:layout_height="31dp"
                    android:layout_marginRight="16dp"
                    android:layout_weight="1"
                    android:text="Use SAP Percent"
                    android:textColor="@color/colorPrimaryDark"
                    android:textSize="14sp"
                    app:layout_constraintRight_toRightOf="parent"
                    tools:layout_editor_absoluteY="248dp" />

            </RadioGroup>

            <EditText
                android:id="@+id/sell_through"
                android:layout_width="175dp"
                android:layout_height="40dp"
                android:layout_marginEnd="16dp"
                android:layout_marginRight="16dp"
                android:layout_marginTop="48dp"
                android:ems="10"
                android:gravity="right"
                android:inputType="number"
                android:textColor="@color/colorPrimaryDark"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/slab" />

            <EditText
                android:id="@+id/sell_out"
                android:layout_width="175dp"
                android:layout_height="40dp"
                android:layout_marginEnd="16dp"
                android:layout_marginRight="16dp"
                android:ems="10"
                android:gravity="right"
                android:inputType="number"
                android:textColor="@color/colorPrimaryDark"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/sell_through" />

            <EditText
                android:id="@+id/display"
                android:layout_width="175dp"
                android:layout_height="40dp"
                android:layout_marginEnd="16dp"
                android:layout_marginRight="16dp"
                android:ems="10"
                android:gravity="right"
                android:inputType="number"
                android:textColor="@color/colorPrimaryDark"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/sell_out" />

            <RadioGroup
                android:id="@+id/display_radio_group"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_marginEnd="8dp"
                android:layout_marginStart="8dp"
                android:layout_marginTop="8dp"
                android:orientation="horizontal"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintHorizontal_bias="0.0"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/display">

                <RadioButton
                    android:id="@+id/radio_display_value"
                    android:layout_width="170dp"
                    android:layout_height="31dp"
                    android:layout_marginRight="16dp"
                    android:layout_weight="1"
                    android:checked="true"
                    android:text="Use Fixed Amount"
                    android:textColor="@color/colorPrimaryDark"
                    android:textSize="14sp"
                    app:layout_constraintRight_toRightOf="parent"
                    tools:layout_editor_absoluteY="248dp" />

                <RadioButton
                    android:id="@+id/radio_display_percent"
                    android:layout_width="170dp"
                    android:layout_height="31dp"
                    android:layout_marginRight="16dp"
                    android:layout_weight="1"
                    android:text="Use SAP Percent"
                    android:textColor="@color/colorPrimaryDark"
                    android:textSize="14sp"
                    app:layout_constraintRight_toRightOf="parent"
                    tools:layout_editor_absoluteY="248dp" />

            </RadioGroup>

            <EditText
                android:id="@+id/tie_up"
                android:layout_width="175dp"
                android:layout_height="40dp"
                android:layout_marginEnd="16dp"
                android:layout_marginRight="16dp"
                android:layout_marginTop="48dp"
                android:ems="10"
                android:gravity="right"
                android:inputType="number"
                android:textColor="@color/colorPrimaryDark"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/display" />

            <EditText
                android:id="@+id/handling"
                android:layout_width="175dp"
                android:layout_height="40dp"
                android:layout_marginEnd="16dp"
                android:layout_marginRight="16dp"
                android:ems="10"
                android:gravity="right"
                android:inputType="number"
                android:textColor="@color/colorPrimaryDark"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/tie_up" />


            <EditText
                android:id="@+id/cash_discount"
                android:layout_width="175dp"
                android:layout_height="40dp"
                android:layout_marginEnd="16dp"
                android:layout_marginRight="16dp"
                android:ems="10"
                android:gravity="right"
                android:inputType="number"
                android:textColor="@color/colorPrimaryDark"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/handling" />

            <TextView
                android:id="@+id/d_dp"
                android:layout_width="175dp"
                android:layout_height="wrap_content"
                android:layout_marginLeft="16dp"
                android:layout_marginStart="8dp"
                android:text="DP"
                android:textColor="@color/colorPrimaryDark"
                android:textSize="18sp"
                app:layout_constraintBaseline_toBaselineOf="@+id/dp"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintStart_toStartOf="parent" />

            <TextView
                android:id="@+id/d_allowance"
                android:layout_width="175dp"
                android:layout_height="wrap_content"
                android:layout_marginStart="8dp"
                android:text="Allowance"
                android:textColor="@color/colorPrimaryDark"
                android:textSize="18sp"
                app:layout_constraintBaseline_toBaselineOf="@+id/allowance"
                app:layout_constraintStart_toStartOf="parent" />

            <TextView
                android:id="@+id/d_gst"
                android:layout_width="175dp"
                android:layout_height="wrap_content"
                android:layout_marginStart="8dp"
                android:text="GST"
                android:textColor="@color/colorPrimaryDark"
                android:textSize="18sp"
                app:layout_constraintBaseline_toBaselineOf="@+id/gst"
                app:layout_constraintStart_toStartOf="parent" />

            <TextView
                android:id="@+id/d_slab"
                android:layout_width="175dp"
                android:layout_height="wrap_content"
                android:layout_marginStart="8dp"
                android:text="Slab"
                android:textColor="@color/colorPrimaryDark"
                android:textSize="18sp"
                app:layout_constraintBaseline_toBaselineOf="@+id/slab"
                app:layout_constraintStart_toStartOf="parent" />

            <TextView
                android:id="@+id/d_sell_through"
                android:layout_width="175dp"
                android:layout_height="wrap_content"
                android:layout_marginStart="8dp"
                android:text="Sell Through"
                android:textColor="@color/colorPrimaryDark"
                android:textSize="18sp"
                app:layout_constraintBaseline_toBaselineOf="@+id/sell_through"
                app:layout_constraintStart_toStartOf="parent" />

            <TextView
                android:id="@+id/d_sell_out"
                android:layout_width="175dp"
                android:layout_height="wrap_content"
                android:layout_marginStart="8dp"
                android:text="Sell Out"
                android:textColor="@color/colorPrimaryDark"
                android:textSize="18sp"
                app:layout_constraintBaseline_toBaselineOf="@+id/sell_out"
                app:layout_constraintStart_toStartOf="parent" />

            <TextView
                android:id="@+id/d_display"
                android:layout_width="175dp"
                android:layout_height="wrap_content"
                android:layout_marginStart="8dp"
                android:text="Display"
                android:textColor="@color/colorPrimaryDark"
                android:textSize="18sp"
                app:layout_constraintBaseline_toBaselineOf="@+id/display"
                app:layout_constraintStart_toStartOf="parent" />


            <TextView
                android:id="@+id/d_tie_up"
                android:layout_width="175dp"
                android:layout_height="wrap_content"
                android:layout_marginStart="8dp"
                android:text="Tie UP"
                android:textColor="@color/colorPrimaryDark"
                android:textSize="18sp"
                app:layout_constraintBaseline_toBaselineOf="@+id/tie_up"
                app:layout_constraintStart_toStartOf="parent" />

            <TextView
                android:id="@+id/d_handling"
                android:layout_width="175dp"
                android:layout_height="wrap_content"
                android:layout_marginStart="8dp"
                android:text="Handling"
                android:textColor="@color/colorPrimaryDark"
                android:textSize="18sp"
                app:layout_constraintBaseline_toBaselineOf="@+id/handling"
                app:layout_constraintStart_toStartOf="parent" />

            <TextView
                android:id="@+id/d_cash_discount"
                android:layout_width="175dp"
                android:layout_height="wrap_content"
                android:layout_marginStart="8dp"
                android:text="Cash Discount"
                android:textColor="@color/colorPrimaryDark"
                android:textSize="18sp"
                app:layout_constraintBaseline_toBaselineOf="@+id/cash_discount"
                app:layout_constraintStart_toStartOf="parent" />

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

1 Ответ

0 голосов
/ 05 июня 2018

Здесь есть несколько вариантов, но я думаю, что тот, который требует наименьшего количества рефакторинга вашего макета, таков:

  • Добавьте атрибут android:layout_below к вашему ScrollViewи расположите его под одним из фиксированных представлений.Неважно, какой из них, если они имеют одинаковую высоту:

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@id/sap">
    
  • Уменьшить (или удалить) верхнее поле из EditText с идентификатором android:id="@+id/dp"чтобы избавиться от лишнего пространства сверху.

При этом, поскольку вы используете фиксированную ширину для всех видов в макете, у вас могут возникнуть некоторые проблемы с отображением на разных размерах экрана.,Например, три фиксированных вида сверху могут перекрывать друг друга, если не хватает горизонтального пространства.Возможно, это можно решить, используя другие макеты (например, ConstraintLayout или LinearLayout) в качестве корневого и / или не используя фиксированную ширину.Однако для этого потребуется гораздо больше рефакторинга, чем в приведенном выше решении.

...