【问题标题】:How to determine the final size of view before expand?展开前如何确定最终视图大小?
【发布时间】:2015-09-29 04:37:28
【问题描述】:

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

目前我将高度视图设置为 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();
    }
});

【问题讨论】:

    标签: android android-layout height expand


    【解决方案1】:

    为此有一个.measure() 方法:

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

    【讨论】:

    • measure 以 MeasureSpec 作为参数,所以 MATCH_PARENT 和 WRAP_CONTENT 不适合这里
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-16
    • 1970-01-01
    • 1970-01-01
    • 2020-12-10
    • 2020-09-09
    • 2015-07-28
    相关资源
    最近更新 更多