繁体   English   中英

Android:如何确定视图的新大小

[英]Android: how to determine new size of a view

我有一个LinearLayout(垂直),其中有两个子视图。 第一个是ScrollView,第二个是具有Visibility.GONE的另一版面,其大小不固定(由其子级确定)。

<LinearLayout vertical>

    <ScrollView> ... </ScrollView>

    <AnotherLayout visibility=GONE height=wrap_content> ... </AnotherLayout>

</LinearLayout>

在某个时间点,我想显示AnotherLayout。 但是,一旦弹出,我还想调整ScollView的滚动。 为此,我需要知道这个AnotherLayout的大小。

我正在做这样的事情:

int oldHeight = scrollArea.getHeight();
linearLayout.setVisibility(VISIBLE);
int newHeight = scrollArea.getHeight();

但是oldHeight和newHeight仍然相同。

如何计算新高度?

这两个维度是相同的,因为可见性更改需要花费时间,并且代码行在此之前已经运行,因此它返回的是相同的。 您可以使用可见性侦听器来计算可见性更改后的尺寸,也可以使用

    linearLayout.setTag(linearLayout.getVisibility());
    linearLayout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            int newVis = linearLayout.getVisibility();
            if((int)linearLayout.getTag() != newVis)
            {
                linearLayout.setTag(linearLayout.getVisibility());
                //visibility has changed
                int newHeight = scrollArea.getHeight();
            }
        }
    });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM