В центре вид в родительском и ниже определенного вида - PullRequest
0 голосов
/ 31 августа 2018
  1. View А должен быть центрирован в Родителе
  2. View B (TextView) должно отображаться в верхней части родительского элемента.
  3. Но по мере того, как высота представления B увеличивается и достигает представления A, оно должно нажимать на представление A столько, сколько требуется для отображения всего его содержимого.

Если я использую относительную компоновку, я могу либо поднять View A по центру вертикали Parent, либо ниже View B. Но я не могу добиться того и другого. Кроме того, # 3 представляется возможным только в том случае, если представление A находится ниже представления B в относительной компоновке, но тогда я не могу сделать его центром в родительском элементе для начала, в то время как высота представления B недостаточно велика для достижения представления A.

Может ли кто-нибудь дать некоторые предложения? Спасибо

1 Ответ

0 голосов
/ 31 августа 2018

Попробуйте это:

<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

Надеюсь, это поможет вам:)

...