Как настроить высоту вертикального элемента управления в ConstraintLayout в Android Studio? - PullRequest
0 голосов
/ 08 октября 2019

Я надеюсь установить высоту вертикального элемента управления VerticalSeekBar как максимальную высоту между btnMenu и btnAction .

Но Макет B (результат Изображение B ) не то, что мне нужно, поэтому я должен определить значение высоты VerticalSeekBar как фиксированный 200dp, вы можете увидеть Макет A (В результате Изображение A ).

Кстати, элемент управления VerticalSeekBar размещен на https://github.com/lukelorusso/VerticalSeekBar

МакетA

<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/camera_ui_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent">


    <ImageButton
            android:id="@+id/btnExit"
            android:layout_width="@dimen/round_button_small"
            android:layout_height="@dimen/round_button_small"
            android:layout_marginLeft="@dimen/margin_xsmall"
            android:layout_marginTop="@dimen/margin_small"
            android:background="@android:color/transparent"
            android:scaleType="fitCenter"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:srcCompat="@drawable/ic_exit" />


    <ImageButton
            android:id="@+id/btnMenu"
            android:layout_width="@dimen/round_button_small"
            android:layout_height="@dimen/round_button_small"
            android:layout_marginTop="@dimen/margin_small"
            android:layout_marginRight="@dimen/margin_xsmall"
            android:background="@android:color/transparent"
            android:scaleType="fitCenter"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:srcCompat="@drawable/ic_menu" />


    <ImageButton
            android:id="@+id/btnFlash"
            android:layout_width="@dimen/round_button_medium"
            android:layout_height="@dimen/round_button_medium"
            android:layout_marginLeft="@dimen/margin_xsmall"
            android:layout_marginBottom="@dimen/margin_medium"
            android:background="@android:color/transparent"
            android:scaleType="fitCenter"

            app:layout_constraintHorizontal_chainStyle="spread_inside"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toLeftOf="@+id/btnVideo"
            app:srcCompat="@drawable/ic_flash_on" />

    <ImageButton
            android:id="@+id/btnVideo"
            android:layout_width="@dimen/round_button_medium"
            android:layout_height="@dimen/round_button_medium"
            android:layout_marginBottom="@dimen/margin_medium"
            android:background="@android:color/transparent"
            android:scaleType="fitCenter"

            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toRightOf="@+id/btnFlash"
            app:layout_constraintRight_toLeftOf="@+id/btnPicture"
            app:srcCompat="@drawable/ic_menu" />


    <ImageButton
            android:id="@+id/btnPicture"
            android:layout_width="@dimen/round_button_medium"
            android:layout_height="@dimen/round_button_medium"
            android:layout_marginBottom="@dimen/margin_medium"
            android:background="@android:color/transparent"
            android:scaleType="fitCenter"

            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toRightOf="@+id/btnVideo"
            app:layout_constraintRight_toLeftOf="@+id/btnAction"
            app:srcCompat="@drawable/ic_menu" />

    <ImageButton
            android:id="@+id/btnAction"
            android:layout_width="@dimen/round_button_medium"
            android:layout_height="@dimen/round_button_medium"
            android:layout_marginRight="@dimen/margin_xsmall"
            android:layout_marginBottom="@dimen/margin_medium"
            android:background="@android:color/transparent"
            android:scaleType="fitCenter"

            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintLeft_toRightOf="@+id/btnPicture"
            app:srcCompat="@drawable/ic_menu" />


    <com.lukelorusso.verticalseekbar.VerticalSeekBar
            android:id="@+id/verticalSeekBar"
            android:layout_width="10dp"
            android:layout_height="200dp"
            android:layout_marginRight="30dp"

            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintBottom_toTopOf="parent"
            app:layout_constraintTop_toBottomOf="parent" />


</androidx.constraintlayout.widget.ConstraintLayout>

Изображение A

enter image description here

Макет B

<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/camera_ui_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    <!-- ... The code is same with Layout A -->

    <com.lukelorusso.verticalseekbar.VerticalSeekBar
            android:id="@+id/verticalSeekBar"
            android:layout_width="10dp"
            android:layout_height="match_parent"
            android:layout_marginRight="30dp"

            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintBottom_toTopOf="@+id/btnAction"
            app:layout_constraintTop_toBottomOf="@+id/btnMenu" />


</androidx.constraintlayout.widget.ConstraintLayout>

Изображение B

enter image description here

Ответы [ 2 ]

1 голос
/ 08 октября 2019

попробуйте включить seekBar в другой макет как LinearLayout:

<LinearLayout
        android:id="@+id/verticalSeekBarLayout"
        android:layout_width="10dp"
        android:layout_height="0dp"
        android:layout_marginRight="30dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintBottom_toTopOf="@+id/btnAction"
        app:layout_constraintTop_toBottomOf="@+id/btnMenu"
        android:orientation="vertical">

        <com.lukelorusso.verticalseekbar.VerticalSeekBar
            android:id="@+id/verticalSeekBar"
            android:layout_width="10dp"
            android:layout_height="match_parent"
            android:layout_marginRight="30dp" />
    </LinearLayout>
0 голосов
/ 08 октября 2019

попробуйте это: (если правильно понимаете, что вы хотите)

<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/camera_ui_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent">


    <ImageButton
            android:id="@+id/btnExit"
            android:layout_width="@dimen/round_button_small"
            android:layout_height="@dimen/round_button_small"
            android:layout_marginLeft="@dimen/margin_xsmall"
            android:layout_marginTop="@dimen/margin_small"
            android:background="@android:color/transparent"
            android:scaleType="fitCenter"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:srcCompat="@drawable/ic_exit" />


    <ImageButton
            android:id="@+id/btnMenu"
            android:layout_width="@dimen/round_button_small"
            android:layout_height="@dimen/round_button_small"
            android:layout_marginTop="@dimen/margin_small"
            android:layout_marginRight="@dimen/margin_xsmall"
            android:background="@android:color/transparent"
            android:scaleType="fitCenter"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:srcCompat="@drawable/ic_menu" />


    <ImageButton
            android:id="@+id/btnFlash"
            android:layout_width="@dimen/round_button_medium"
            android:layout_height="@dimen/round_button_medium"
            android:layout_marginLeft="@dimen/margin_xsmall"
            android:layout_marginBottom="@dimen/margin_medium"
            android:background="@android:color/transparent"
            android:scaleType="fitCenter"

            app:layout_constraintHorizontal_chainStyle="spread_inside"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toLeftOf="@+id/btnVideo"
            app:srcCompat="@drawable/ic_flash_on" />

    <ImageButton
            android:id="@+id/btnVideo"
            android:layout_width="@dimen/round_button_medium"
            android:layout_height="@dimen/round_button_medium"
            android:layout_marginBottom="@dimen/margin_medium"
            android:background="@android:color/transparent"
            android:scaleType="fitCenter"

            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toRightOf="@+id/btnFlash"
            app:layout_constraintRight_toLeftOf="@+id/btnPicture"
            app:srcCompat="@drawable/ic_menu" />


    <ImageButton
            android:id="@+id/btnPicture"
            android:layout_width="@dimen/round_button_medium"
            android:layout_height="@dimen/round_button_medium"
            android:layout_marginBottom="@dimen/margin_medium"
            android:background="@android:color/transparent"
            android:scaleType="fitCenter"

            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toRightOf="@+id/btnVideo"
            app:layout_constraintRight_toLeftOf="@+id/btnAction"
            app:srcCompat="@drawable/ic_menu" />

    <ImageButton
            android:id="@+id/btnAction"
            android:layout_width="@dimen/round_button_medium"
            android:layout_height="@dimen/round_button_medium"
            android:layout_marginRight="@dimen/margin_xsmall"
            android:layout_marginBottom="@dimen/margin_medium"
            android:background="@android:color/transparent"
            android:scaleType="fitCenter"

            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintLeft_toRightOf="@+id/btnPicture"
            app:srcCompat="@drawable/ic_menu" />


    <com.lukelorusso.verticalseekbar.VerticalSeekBar
            android:id="@+id/verticalSeekBar"
            android:layout_width="10dp"
            android:layout_height="0dp" // here the view will take all the availanble space
            android:layout_marginRight="30dp"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintBottom_toTopOf="@+id/btnAction" // bottom to action button
            app:layout_constraintTop_toBottomOf="@+id/btnMenu" // top to menu button/>


</androidx.constraintlayout.widget.ConstraintLayout>
...