Почему ограничение Android Baseline_toBaselineOf не работает по вертикали

#android #android-layout

#Android #android-макет

Вопрос:

 <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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:id="@ id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:id="@ id/playButton"
        android:layout_width="73dp"
        android:layout_height="62dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:srcCompat="@android:drawable/ic_media_play" />

        <ImageView
            android:id="@ id/nextMusic"
            android:layout_width="73dp"
            android:layout_height="62dp"
            android:layout_marginEnd="66dp"
            app:layout_constraintStart_toEndOf="@ id/playButton"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toTopOf="@ id/playButton"
            app:layout_constraintBottom_toBottomOf="@ id/playButton"
            app:layout_constraintBaseline_toBaselineOf="@ id/playButton"
            app:srcCompat="@android:drawable/ic_media_next" />

        <ImageView
            android:id="@ id/previousMusic"
            android:layout_width="73dp"
            android:layout_height="62dp"
            android:layout_marginStart="84dp"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="@ id/playButton"
            app:layout_constraintBottom_toBottomOf="@ id/playButton"
            app:layout_constraintBaseline_toBaselineOf="@ id/playButton"
            app:srcCompat="@android:drawable/ic_media_previous" />
    </androidx.constraintlayout.widget.ConstraintLayout>
  

Я пытаюсь выровнять эти три виджета с помощью «app: layout_constraintBaseline_toBaselineOf», однако, как показано в приведенном ниже результате, он, похоже, не выравнивается должным образом:

введите описание изображения здесь

Как я могу выровнять их и отправить в нижнюю часть экрана?

Ответ №1:

У ImageViews нет базовых линий, поэтому удалите все базовые ограничения. Снимите app:layout_constraintTop_toTopOf="parent" ограничение на кнопку воспроизведения. Это отправит кнопку воспроизведения в нижнюю часть экрана. (Ограничение по верхнему и нижнему центрам виджета.)

Как только кнопка воспроизведения окажется внизу, вы сможете настроить другие виды. Смотрите Документацию для ConstraintLayout.

Комментарии:

1. Спасибо! После удаления всех базовых линий, но резервирования приложения:layout_constraintTop_toTopOf=»родительский», оба представления будут выровнены по центру. И использование app:layout_constraintVertical_bias может помочь мне контролировать их, чтобы они зависали в нужном месте.