android - 展开前如何确定 View 的最终大小?

标签 android android-layout height expand

我有一个包含 TextView 的 LinearLayout。 LinearLayout 的初始高度设置为 20px,其中 TextView 的内容会溢出其边界。我想为 LinearLayout 设置动画以展开以包装内容(其子项高度)。如何在展开前确定 LinearLayout 的最终大小?

enter image description here

目前我暂时将 View 高度设置为 wrap_content 并在测量最终高度后再次将高度重置为 20!显然,这会导致在动画之前出现不需要的眨眼,应该用更好的解决方案代替。

//I hate these two lines
    view.getLayoutParams().height=ViewGroup.LayoutParams.WRAP_CONTENT;
    view.requestLayout();
//End of hate!

view.post(new Runnable() {
    @Override
    public void run() {
       int targetHeight = view.getMeasuredHeight();
       view.getLayoutParams().height=20;
       view.requestLayout();
    }
});

最佳答案

有一个.measure()方法:

view.measure(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
int targetHeight = view.getMeasuredHeight();

关于android - 展开前如何确定 View 的最终大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32831247/

相关文章:

android - 为什么RECEIVE_SMS和READ_SMS权限没有不同的提示框要求权限?

java - MQTT:向代理发布消息时 Android 应用程序崩溃

css - 垂直线不占满整个页面?

Android NFC Intents 没有开始我的 Activity

android - Dagger :IllegalArgumentException:没有注入(inject)器工厂绑定(bind)到类

android - 隐藏按钮后如何用ListView填充空白区域

android - 如何在android中的相机预览中绘制矩形

android - 在android中应用KeyboardView

android - 加载图像后更新 RecyclerView 项目的高度?

html - 如何制作有高度限制的div?