[英]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.