ConstraintLayout margin_top не работает?

Мне нужно ограничить мою кнопку constraint_top до myCardView constraint_bottom и установить margin_top моей кнопки на 64dp. Но по какой-то причине не работает.

Вот мой макет:

<?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:layout_height = "match_parent"
    android:background = "@color/shadow"
    android:orientation = "vertical">

    <android.support.v7.widget.CardView
        android:id = "@+id/myCardViewItem"
        android:layout_width = "0dp"
        android:layout_height = "wrap_content"
        android:layout_margin = "16dp"
        android:layout_marginEnd = "8dp"
        android:layout_marginStart = "8dp"
        android:layout_marginTop = "8dp"
        app:cardCornerRadius = "4dp"
        app:layout_constraintEnd_toEndOf = "parent"
        app:layout_constraintStart_toStartOf = "parent"
        app:layout_constraintTop_toTopOf = "parent">

        <android.support.constraint.ConstraintLayout
            android:layout_width = "match_parent"
            android:layout_height = "wrap_content">

            <EditText
                android:id = "@+id/txtItemValue"
                android:layout_width = "0dp"
                android:layout_height = "wrap_content"
                android:layout_marginBottom = "8dp"
                android:layout_marginLeft = "16dp"
                android:layout_marginTop = "8dp"
                android:background = "@android:color/transparent"
                android:drawableLeft = "@drawable/ic_folder"
                android:drawablePadding = "8dp"
                android:ems = "10"
                android:hint = "@string/item"
                android:inputType = "textPersonName"
                app:layout_constraintBottom_toBottomOf = "parent"
                app:layout_constraintLeft_toLeftOf = "parent"
                app:layout_constraintTop_toTopOf = "parent" />

        </android.support.constraint.ConstraintLayout>
    </android.support.v7.widget.CardView>

    <android.support.v7.widget.CardView
        android:id = "@+id/myCardViewItemName"
        android:layout_width = "0dp"
        android:layout_height = "wrap_content"
        android:layout_margin = "16dp"
        android:layout_marginEnd = "8dp"
        android:layout_marginStart = "8dp"
        android:layout_marginTop = "8dp"
        app:cardCornerRadius = "4dp"
        app:layout_constraintEnd_toEndOf = "parent"
        app:layout_constraintStart_toStartOf = "parent"
        app:layout_constraintTop_toBottomOf = "@id/myCardViewItem">

        <android.support.constraint.ConstraintLayout
            android:layout_width = "match_parent"
            android:layout_height = "wrap_content">


            <EditText
                android:id = "@+id/txtItemNameValue"
                android:layout_width = "0dp"
                android:layout_height = "wrap_content"
                android:layout_marginBottom = "8dp"
                android:layout_marginLeft = "16dp"
                android:layout_marginTop = "8dp"
                android:background = "@android:color/transparent"
                android:drawableLeft = "@drawable/ic_folder"
                android:drawablePadding = "8dp"
                android:ems = "10"
                android:hint = "@string/item_name"
                android:inputType = "text"
                app:layout_constraintBottom_toBottomOf = "parent"
                app:layout_constraintLeft_toLeftOf = "parent"
                app:layout_constraintTop_toTopOf = "parent" />

        </android.support.constraint.ConstraintLayout>
    </android.support.v7.widget.CardView>

    <android.support.v7.widget.CardView
        android:id = "@+id/myCardViewItemPrice"
        android:layout_width = "0dp"
        android:layout_height = "wrap_content"
        android:layout_margin = "16dp"
        android:layout_marginEnd = "8dp"
        android:layout_marginStart = "8dp"
        android:layout_marginTop = "8dp"
        app:cardCornerRadius = "4dp"
        app:layout_constraintEnd_toEndOf = "parent"
        app:layout_constraintStart_toStartOf = "parent"
        app:layout_constraintTop_toBottomOf = "@+id/myCardViewItemName">

        <android.support.constraint.ConstraintLayout
            android:layout_width = "match_parent"
            android:layout_height = "wrap_content">

            <EditText
                android:id = "@+id/txtItemPriceValue"
                android:layout_width = "0dp"
                android:layout_height = "wrap_content"
                android:layout_marginBottom = "8dp"
                android:layout_marginLeft = "16dp"
                android:layout_marginTop = "8dp"
                android:background = "@android:color/transparent"
                android:drawableLeft = "@drawable/ic_folder"
                android:drawablePadding = "8dp"
                android:ems = "10"
                android:hint = "@string/item_price"
                android:inputType = "numberDecimal"
                app:layout_constraintBottom_toBottomOf = "parent"
                app:layout_constraintLeft_toLeftOf = "parent"
                app:layout_constraintTop_toTopOf = "parent" />

        </android.support.constraint.ConstraintLayout>
    </android.support.v7.widget.CardView>

<android.support.v7.widget.CardView
    android:id = "@+id/myCardViewItemStoredQuantity"
    android:layout_width = "0dp"
    android:layout_height = "wrap_content"
    android:layout_margin = "16dp"
    android:layout_marginEnd = "8dp"
    android:layout_marginStart = "8dp"
    android:layout_marginTop = "8dp"
    app:cardCornerRadius = "4dp"
    app:layout_constraintEnd_toEndOf = "parent"
    app:layout_constraintStart_toStartOf = "parent"
    app:layout_constraintTop_toBottomOf = "@+id/myCardViewItemPrice">

    <android.support.constraint.ConstraintLayout
        android:layout_width = "match_parent"
        android:layout_height = "wrap_content">

        <EditText
            android:id = "@+id/txtItemStoredQuantityValue"
            android:layout_width = "0dp"
            android:layout_height = "wrap_content"
            android:layout_marginBottom = "8dp"
            android:layout_marginLeft = "16dp"
            android:layout_marginTop = "8dp"
            android:background = "@android:color/transparent"
            android:drawableLeft = "@drawable/ic_folder"
            android:drawablePadding = "8dp"
            android:ems = "10"
            android:hint = "@string/item_stored_quantity"
            android:inputType = "number"
            app:layout_constraintBottom_toBottomOf = "parent"
            app:layout_constraintLeft_toLeftOf = "parent"
            app:layout_constraintTop_toTopOf = "parent" />

    </android.support.constraint.ConstraintLayout>
</android.support.v7.widget.CardView>

<Button
    android:id = "@+id/btnRegister"
    android:layout_width = "250dp"
    android:layout_height = "45dp"
    android:layout_margin = "16dp"
    android:layout_marginEnd = "8dp"
    android:layout_marginStart = "8dp"
    android:layout_marginTop = "64dp"
    android:background = "@drawable/rounded_button_shape"
    android:text = "salvar"
    android:textColor = "@color/white"
    app:layout_constraintEnd_toEndOf = "parent"
    app:layout_constraintStart_toStartOf = "parent"
    app:layout_constraintTop_toBottomOf = "@+id/myCardViewItemStoredQuantity" />

<TextView
    android:id = "@+id/txtViewList"
    android:layout_width = "250dp"
    android:layout_height = "wrap_content"
    android:layout_marginEnd = "8dp"
    android:layout_marginStart = "8dp"
    android:layout_marginTop = "8dp"
    android:text = "Listar"
    android:textAlignment = "center"
    android:textSize = "18sp"
    app:layout_constraintEnd_toEndOf = "parent"
    app:layout_constraintStart_toStartOf = "parent"
    app:layout_constraintTop_toBottomOf = "@+id/btnRegister" />
</android.support.constraint.ConstraintLayout>

Это результат margin_top 64dp или любого введенного значения. Не работает.

ConstraintLayout margin_top не работает?

Я думаю, это могло быть вызвано иерархией наследования макета, но я не могу найти ошибку. кто угодно? Спасибо!

0
0
321
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Предположим, что вы не можете создать свое приложение, попробуйте удалить + перед идентификатором в объявлении кнопки. Знак плюс используется только для объявления идентификатора.

app:layout_constraintTop_toBottomOf = "@id/myCardViewItemStoredQuantity"
Ответ принят как подходящий

Просто удалите со своей кнопки

android:layout_margin = "16dp"

И android: layout_marginTop = "64dp" в вашей кнопке будет работать Конечный результат

Это потому, что вы используете

android:layout_margin = "16dp"

а также

android:layout_marginTop = "64dp"

когда вы используете layout_margin, он устанавливает все поля, включая верхнее, правое, левое и кнопку, на это число. Итак, если вы используете android:layout_margin = "16dp", он также устанавливает android:layout_marginTop = "16dp". Итак, вы должны удалить android:layout_margin = "16dp", и все будет в порядке.

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