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

时间:2011-12-16 11:55:50

标签: android android-layout

我有一个相对布局,它有一个ImageView和一个与ImageView右边对齐的textview。

我有一个类膨胀这个相对布局并自行添加(好像是那个布局)。

最初textview的visiblity设置为GONE,因此视图的大小就是ImageView的大小。 现在,当视图获得焦点时,我将textview的可见性设置为VISIBLE并设置动画以逐步将视图从imageView的宽度调整为(近似)imageview + textview width(我实际上在程序中给出了硬编码值)。 / p>

我的问题是,在启用/删除textview的可见性之后我如何确定布局的总宽度(因为textview的宽度可以是可变的),这样我就可以将该值指定给动画作为最终版本端点?

我想在设置可见性之后立即找到它,因为如果启用可见性和启动动画有延迟,输出就像首先显示完整宽度的视图(imageview + textview),然后返回到imageview大小(动画开始),然后继续到imageview + textview大小(动画结束)。 如果当时没有办法找到它,那么有人可以建议我手动计算最终尺寸吗?

---- ---- EDIT

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

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

因此,当第一次创建视图时,父布局始终为fill_parent,背景布局仅具有imageview的大小,并将textview的visiblity设置为不可见。当文本被添加到文本视图中时,几毫秒后(使用countdowntimer),我获取最终尺寸,设置动画以将尺寸从imageView的宽度缩放到imageView + textView宽度,并在动画结束后设置可见性文本视图可见。

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

2 个答案:

答案 0 :(得分:0)

将RelativeLayout宽度值设置为“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>

无需设置硬代码值

答案 1 :(得分:0)

如果我理解您的问题,在您想要的视图中使用getWidth()getHeight()将返回您寻找的尺寸。