GetHeight for View, который имеет видимость = ушел

У меня есть LinearLayout, чья видимость по умолчанию установлена ​​на «Gone», мне нужно получить высоту этого представления, чтобы сделать анимацию скольжения, когда она будет видна. Как получить общий уровень видимого состояния, потому что View.getHeight возвращает ноль, когда макет не вызывается.

<LinearLayout android:id="@+id/card_checkin_layout_termsconditionsconfirmation" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="4dp" android:layout_marginRight="4dp" android:gravity="center_horizontal" android:background="#d0d0d0" android:visibility="invisible" android:orientation="vertical" > <Button android:id="@+id/card_checkin_button_confirmdetails" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="8dp" android:background="@drawable/shape_checkin_buttons2" android:text="> Confirm your details" android:paddingLeft="8dp" android:gravity="left|center_vertical" android:textColor="@color/card_checkin_button_textcolor_blue" /> <Button android:id="@+id/card_checkin_button_termsandconditions" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" android:layout_marginBottom="8dp" android:paddingLeft="8dp" android:background="@drawable/shape_checkin_buttons2" android:text="> Terms and Conditions" android:gravity="left|center_vertical" android:textColor="@color/card_checkin_button_textcolor_blue" /> </LinearLayout> 

Первоначально для видимости видимости или невидимости для начала, чтобы высота вычислялась. Позже измените видимость.

FYI: removeGlobalOnLayoutListener() устарел с уровня API 16, он заменяется removeOnGlobalLayoutListener() .

Вы можете попробовать следующее:

 // onCreate or onResume or onStart ... mView = findViewByID(R.id.someID); mView.getViewTreeObserver().addOnGlobalLayoutListener( new OnGlobalLayoutListener(){ @Override public void onGlobalLayout() { // gets called after layout has been done but before display // so we can get the height then hide the view mHeight = mView.getHeight(); mView.getViewTreeObserver().removeOnGlobalLayoutListener(this); mView.setVisibility(View.GONE); } });