如何在xml中将可见度和高度的视图高度定义为wrap_content?

Bus*_*ata 4 java xml android

我有一个带有visibility = gone和height = wrap_content的ListView,我需要它的高度来制作展开动画.

我已经尝试过了:

view.measure(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
int height = view.getMeasuredHeight();
Run Code Online (Sandbox Code Playgroud)

v.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED),
                View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
int height = view.getMeasuredHeight();
Run Code Online (Sandbox Code Playgroud)

v.measure(View.MeasureSpec.makeMeasureSpec(ViewGroup.LayoutParams.MATCH_PARENT, View.MeasureSpec.UNSPECIFIED),
                View.MeasureSpec.makeMeasureSpec(ViewGroup.LayoutParams.WRAP_CONTENT, View.MeasureSpec.UNSPECIFIED));
int height = view.getMeasuredHeight();
Run Code Online (Sandbox Code Playgroud)

但它让我的价值降低了.

我试图在onResume之后这样做.

Bus*_*ata 15

我找到的唯一方法是从可见标题视图的宽度设置我的视图的宽度,然后下面的代码返回正确的值.

int widthSpec = MeasureSpec.makeMeasureSpec(headerView.getWidth(), MeasureSpec.EXACTLY);
int heightSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
v.measure(widthSpec, heightSpec);
int height = v.getMeasuredHeight();
Run Code Online (Sandbox Code Playgroud)


sat*_*iva 5

view.post(new Runnable() {
    @Override
    public void run() {
        view.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
        int height = view.getMeasuredHeight();
    }
});
Run Code Online (Sandbox Code Playgroud)

这对我有用。方法“post”确保视图已经添加到屏幕上。