父视图中的中心视图和某个视图下方

时间:2018-08-31 04:22:07

标签: android android-layout android-linearlayout android-constraintlayout

  1. View A将在父级中居中
  2. View B(TextView)将出现在父级的顶部。
  3. 但是当视图B的高度增加并到达视图A时,它应该按要求向下推视图A以显示其所有内容。

如果我使用相对布局,则可以将视图A下移到“父对象”的垂直居中位置,或者在视图B下。 此外,#3似乎只有在相对布局中视图A低于视图B的情况下才有可能,但是当视图B的高度不足以到达视图A时,我不能使其以父项居中。 >

有人可以提供一些建议吗? 谢谢

1 个答案:

答案 0 :(得分:0)

尝试一下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linearLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<TextView
    android:id="@+id/textView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@android:color/holo_blue_dark"
    android:text="TextView1" />

<TextView
    android:id="@+id/textView3"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@android:color/holo_green_dark"
    android:text="TextView2"/>

</LinearLayout>

以编程方式为第一个视图设置minHeight。

ViewTreeObserver observer = linearLayout.getViewTreeObserver();
observer.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {

        @Override
        public void onGlobalLayout() {

            int height = linearLayout.getHeight(); // set height/2 as minHeight for the first view
            linearLayout.getViewTreeObserver().removeGlobalOnLayoutListener(this);

        }
    });

给出此结果:

enter image description here

希望这会对您有所帮助:)