Android 在启用子视图的可见性后确定布局的宽度

Android 在启用子视图的可见性后确定布局的宽度,android,android-layout,Android,Android Layout,我有一个相对布局,它有一个ImageView和一个textview,它们和ImageView的右侧对齐 我有一个类,它膨胀了这个相对布局,并将其自身添加,就好像它就是那个布局一样 最初,textview的Visibility设置为GONE,因此视图的大小仅为ImageView的大小。 现在,当视图接收到焦点时,我将textview的可见性设置为VISIBLE,并设置一个动画,将视图的大小从imageView的宽度增量调整为近似的imageView+textview宽度,我实际上在程序中给出了硬编

我有一个相对布局,它有一个ImageView和一个textview,它们和ImageView的右侧对齐

我有一个类,它膨胀了这个相对布局,并将其自身添加,就好像它就是那个布局一样

最初,textview的Visibility设置为GONE,因此视图的大小仅为ImageView的大小。 现在,当视图接收到焦点时,我将textview的可见性设置为VISIBLE,并设置一个动画,将视图的大小从imageView的宽度增量调整为近似的imageView+textview宽度,我实际上在程序中给出了硬编码值

我的问题是,在启用/禁用textview的可见性后,如何确定布局的总宽度,因为textview的宽度可以是可变的,因此我可以将该值指定给动画作为最终端点

我想在设置Visibility后马上发现这一点,因为如果启用Visibility和启动动画时出现延迟,则输出类似于首先显示具有完整宽度的视图imageview+textview,然后返回到动画的imageview sizestart,然后再返回到动画的imageview+textview sizeend。 如果当时没有办法找到答案,那么有人能建议我手动计算最终尺寸吗

--编辑--

对于我想要达到的效果,似乎没有任何办法。只有在Android完成视图的布局后,才能计算视图的最终尺寸。启用子视图的可见性后,无法立即计算最终尺寸

因此,对于我的解决方案,我将父布局相对布局设置为填充父布局的宽度,有另一个子布局背景,其大小我可以通过程序控制,然后在此基础上,我将imageView父布局左对齐+文本视图右对齐imageView,填充父布局

所以当第一次创建视图时,父布局总是填充父布局,背景布局只有imageview的大小,并将textview的Visibly设置为不可见。当文本被添加到文本视图中时,几毫秒后使用倒计时,我获取了最终尺寸,设置动画以将尺寸从imageView的宽度缩放为imageView+textView宽度,并在动画结束后将文本视图的可见性设置为visible


我不确定我的解决方案是否是最好的,但它似乎工作正常,没有任何问题。

将您的RelativeLayout width值设置为wrap_content,这样无论内容大小如何,大部分大小都将设置为RelativeLayout

<RelativeLayout
    android:layout_width="wrap_layout" android:layout_height="wrap_content">
    <ImageView
    android:layout_width="wrap_layout" android:layout_height="wrap_content" />
    <TextView
    android:layout_width="wrap_layout" android:layout_height="wrap_content" />
</RelativeLayout>

无需设置硬代码值

如果我正确理解了您的问题,在您想要的视图中使用getWidth和getHeight将返回您查找的维度。

它确实提供了维度,但我需要更新的宽度。例如,如果图像视图宽度为130px,文本视图宽度为270px,则由于文本视图可见性消失,最初它将返回我130px,并且在将文本视图可见性设置为可见后,我希望getWidth返回400,但它仍然返回我130px。getWidth仅在视图布局完成后反射400。我想找到一种方法,找出总宽度之前,视图的布局是这样做,动画可以正常工作,没有任何闪烁。你试过这个链接吗?看起来这正是你想要的抱歉,我没有时间为你尝试:我的xml文件与你的Suggested完全相同,它确实返回了宽度。但是,我需要在启用textview的可见性之后和视图布局完成之前的宽度。我在gnclmorais的回复中添加了一条评论。也许你能有一些想法,能更好地帮助我。