java - 获取 View 的高度 - 变量需要声明为 final

标签 java android view height

我想使用 TreeObserver 方法获取 View 的高度:

        int v1_h;
        v1.getViewTreeObserver().addOnGlobalLayoutListener(newViewTreeObserver.OnGlobalLayoutListener() {
            @SuppressLint("NewApi")
            @SuppressWarnings("deprecation")
            @Override
            public void onGlobalLayout() {
                //now we can retrieve the width and height

                v1_h = v1.getHeight();


                if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN)
                    v1.getViewTreeObserver().removeOnGlobalLayoutListener(this);
                else
                    v1.getViewTreeObserver().removeGlobalOnLayoutListener(this);
            }
        });

//Do something with v1_h later on

我想将高度存储在一个变量中并在以后使用。问题是它需要声明为 final 才能从内部类中访问。所以我把它定下来了,但现在它说它不能被分配。有想法该怎么解决这个吗?

最佳答案

最简单的方法是将变量声明为类成员而不是在堆栈上声明的变量。如果您将 v1_h 设为最终版本,您将无法真正按照预期的方式使用它。

关于java - 获取 View 的高度 - 变量需要声明为 final,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36488361/

相关文章:

android - ParseObject 子类不能在构造函数中进行更改

java - 有限制的 Hibernate 实体

android - NestedScrollview 替代方案中的 RecyclerView

java - 用 BouncycaSTLe jar 替换 JCE

android - 如何强制重新安装APK

tsql - 创建可以处理不同表的存储过程

c# - 尝试在 View 中使用模型时出现 MVC 错误

android - 在android中实现加载屏幕的最佳方式

java - restful api一直处于pending状态,tomcat出现异常

java - 任何人都可以帮助我将我的应用程序连接到 Access