getHeight for View有可视性=消失

我有一个LinearLayout,默认情况下它的可见性被设置为“Gone”,我需要获得这个视图的高度来做一个滑出animation。 我如何得到可见状态的总高度,因为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> 

Solutions Collecting From Web of "getHeight for View有可视性=消失"

最初将视图的可见性设置为可见或不可见,以便计算高度。 稍后将可见性更改为消失。

仅供参考: 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); } });