如何设置元素的高度以匹配另一个元素的高度?在android中

vshtjzan  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(466)

我想改变元素大小与可见和消失的其他元素?例如

<RelativeLayout
        android:id="@+id/number1"
        android:layout_width="wrap_content"
        android:layout_height="150dp" /> 

     <RelativeLayout
        android:id="@+id/number2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

我想改变这个参数
把体重数字2永远和身高数字1相等
为什么永远因为通过改变数字1的高度,数字2会自动改变
我该怎么做?

sqserrrh

sqserrrh1#

有几种方法可以实现所需的行为。
第一个是使用constraintlayout作为父布局,它不需要java/kotlin代码。只需将view2的顶部/底部约束设置为与view1的顶部/底部匹配。请记住,这只适用于一种情况:如果视图水平对齐。在这种情况下,要同时更改两个视图的可见性,可能需要使用组
请使用此代码作为参考:

<androidx.constraintlayout.widget.ConstraintLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <View
        android:id="@+id/view_1"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintStart_toStartOf="[your_constraint]"
        app:layout_constraintEnd_toEndOf="[your_constraint]"
        app:layout_constraintTop_toTopOf="[your_constraint]"
        app:layout_constraintBottom_toBottomOf="[your_constraint]"/>

    <View
        android:id="@+id/view_2"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        app:layout_constraintStart_toStartOf="[your_constraint]"
        app:layout_constraintEnd_toEndOf="[your_constraint]"
        app:layout_constraintTop_toTopOf="@id/view_1"
        app:layout_constraintBottom_toBottomOf="@id/view_1"/>

</androidx.constraintlayout.widget.ConstraintLayout>

第二个是从代码中使用view.onlayoutchangelistener。将其设置为第一个视图,并基于第一个视图的高度以编程方式更改第二个视图的高度。
就像在Kotlin那样:

view1.addOnLayoutChangeListener { _, _, top, _, bottom, _, _, _, _ ->
    view2.layoutParams.height = bottom - top
    view2.requestLayout()
}

相关问题