【发布时间】:2011-12-16 11:55:50
【问题描述】:
我有一个相对布局,其中有一个 ImageView 和一个与 ImageView 右侧对齐的 textview。
我有一个类可以扩展此相对布局并自行添加(就好像它是那个布局一样)。
最初 textview 的可见性设置为 GONE,因此视图的大小就是 ImageView 的大小。 现在,当视图获得焦点时,我将 textview 的可见性设置为 VISIBLE 并设置动画以将视图的大小从 imageView 的宽度逐步调整为(大约)imageview+textview 宽度(我实际上是在程序中给出硬编码值)。
我的问题是,在我启用/禁用 textview 的可见性后如何确定布局的总宽度(因为 textview 的宽度可以是可变的),以便我可以将该值指定给动画作为最终端点?
我想在设置可见性后立即发现这一点,因为如果启用可见性和启动动画有延迟,输出就像首先显示具有完整宽度的视图(imageview+textview),然后返回到 imageview 大小(动画开始),然后继续到 imageview+textview 大小(动画结束)。 如果这些当时都没有办法找出来,那么有没有人可以建议我手动计算一下最终的尺寸可能是多少?
----编辑----
对于我想要达到的效果,似乎没有办法。只有在 Android 完成该视图的布局后,才能计算视图的最终尺寸。启用子视图的可见性后无法立即计算最终尺寸
因此对于我的解决方案,我将父布局(相对布局)设置为 fill_parent 作为宽度,有另一个子布局(背景),我可以通过程序控制其大小,然后在此之上我有我的 imageView ( Parent 左对齐)+ textView(imageView 的右侧,fill_parent)。
所以当第一次创建视图时,父布局总是fill_parent,背景布局只有imageview的大小,并将textview的可见性设置为不可见。当文本添加到文本视图时,几毫秒后(使用倒计时),我获取了最终尺寸,将动画设置为从 imageView 的宽度缩放到 imageView+textView 宽度,动画结束后设置可见性文本视图可见。
我不确定我的解决方案是否是最好的,但它似乎可以正常工作,没有任何故障。
【问题讨论】: