Макет ограничений Вложенные центрированные виды

Я пытаюсь создать изображение, содержащее многоуровневые представления (макет с цветом фона, вероятно, также подойдет, поскольку я просто пытаюсь представить серию данных в одном квадрате). Это показано на моем изображении, где каждый цвет представляет собой разный макет или вид (извините за плохие навыки рисования, представьте, что они равномерно расположены и выровнены). Для этого я надеялся использовать процентные атрибуты ConstraintLayout, но они, похоже, не работают для меня ... все, что я могу получить, - это цвет самого нижнего слоя. Как я могу складывать процентные слои?

Макет ограничений Вложенные центрированные виды

Я думал, что ниже код даст мне 3 слоя, каждый по 80% от указанного выше родителя? Но это не так.

<android.support.constraint.ConstraintLayout
    android:id = "@+id/cell_afflictionsAura"
    style = "@style/CenteredBox"
    android:layout_width = "match_parent"
    android:layout_height = "match_parent"
    android:background = "@color/colorPrimary"
    android:foregroundGravity = "center"
    app:layout_constraintWidth_default = "spread"
    app:layout_constraintHeight_default = "spread"
    app:layout_constraintEnd_toEndOf = "parent"
    app:layout_constraintStart_toStartOf = "parent">
    <android.support.constraint.ConstraintLayout
        android:layout_width = "0dp"
        android:layout_height = "0dp"
        android:background = "@color/colorAccent"
        android:foregroundGravity = "center"
        app:layout_constraintWidth_default = "percent"
        app:layout_constraintHeight_default = "percent"
        app:layout_constraintHeight_percent = "80%"
        app:layout_constraintWidth_percent = "80%">
        <android.support.constraint.ConstraintLayout
            android:layout_width = "0dp"
            android:layout_height = "0dp"
            android:background = "@color/solid_black"
            app:layout_constraintWidth_default = "percent"
            app:layout_constraintHeight_default = "percent"
            android:foregroundGravity = "center"
            app:layout_constraintHeight_percent = "80%"
            app:layout_constraintWidth_percent = "80%">

        </android.support.constraint.ConstraintLayout>
    </android.support.constraint.ConstraintLayout>
</android.support.constraint.ConstraintLayout>
0
0
208
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это возможно, вам просто нужно внести некоторые исправления:

1 - укажите желаемый процент в десятичных дробях, например .8 вместо 80%

2 - вы забываете ограничить должность дочерних макетов: вы ограничиваете только высоту и вес. Например, если вы хотите, чтобы представление было централизовано в родительском представлении, вам следует добавить в него следующие атрибуты:

        app:layout_constraintStart_toStartOf = "parent"
        app:layout_constraintTop_toTopOf = "parent"
        app:layout_constraintBottom_toBottomOf = "parent"
        app:layout_constraintEnd_toEndOf = "parent"

3 - наконец, после этих изменений я считаю, что app:layout_constraintWidth_default = "percent" не нужен.

Итак, ваш xml будет таким:

<android.support.constraint.ConstraintLayout
    android:id = "@+id/cell_afflictionsAura"
    style = "@style/CenteredBox"
    android:layout_width = "match_parent"
    android:layout_height = "match_parent"
    android:background = "@color/colorPrimary"
    android:foregroundGravity = "center"
    app:layout_constraintWidth_default = "spread"
    app:layout_constraintHeight_default = "spread">
    <android.support.constraint.ConstraintLayout
        android:layout_width = "0dp"
        android:layout_height = "0dp"
        android:background = "@color/colorAccent"
        android:foregroundGravity = "center"
        app:layout_constraintHeight_percent = ".8"
        app:layout_constraintWidth_percent = ".8"
        app:layout_constraintStart_toStartOf = "parent"
        app:layout_constraintTop_toTopOf = "parent"
        app:layout_constraintBottom_toBottomOf = "parent"
        app:layout_constraintEnd_toEndOf = "parent">
        <!--Transparent horizontal constraint-->
        <android.support.constraint.ConstraintLayout
            android:layout_width = "0dp"
            android:layout_height = "0dp"
            android:background = "@color/solid_black"
            app:layout_constraintHeight_percent = ".8"
            app:layout_constraintWidth_percent = ".8"
            app:layout_constraintStart_toStartOf = "parent"
            app:layout_constraintTop_toTopOf = "parent"
            app:layout_constraintBottom_toBottomOf = "parent"
            app:layout_constraintEnd_toEndOf = "parent">

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

Надеюсь, что это работает!

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

lostScriptie 31.07.2018 22:30

Другие вопросы по теме