如何在android中动态获取版面大小

如何在android中动态获取版面大小,android,textview,android-linearlayout,Android,Textview,Android Linearlayout,我将文本视图添加到线性布局中,这样在三星s2中它工作正常,在三星s3中设备布局高度降低。我正在查找布局高度,但我没有得到只需从布局中获取视图树观察者并将侦听器连接到它。现在在它里面,你可以得到它的高度或宽度,你只需要取消连接全局布局侦听器。请注意,对于android sdk>16,必须使用mContainer.getViewTreeObserver().RemoveOnGlobalYoutListener(此) 如果要将任何视图动态添加到父视图,则可以 通过使用重力、重量等进行调整,以便 兼容所

我将文本视图添加到线性布局中,这样在三星s2中它工作正常,在三星s3中设备布局高度降低。我正在查找布局高度,但我没有得到

只需从布局中获取视图树观察者并将侦听器连接到它。现在在它里面,你可以得到它的高度或宽度,你只需要取消连接全局布局侦听器。请注意,对于android sdk>16,必须使用mContainer.getViewTreeObserver().RemoveOnGlobalYoutListener(此)

  • 如果要将任何视图动态添加到父视图,则可以 通过使用重力、重量等进行调整,以便 兼容所有分辨率。永远不要给出硬代码值
  • 您要求获得布局的高度,可以使用 getHeight()

  • 粘贴布局文件如果任何答案有用,请标记为已接受
    private ViewGroup mContainer;
    
    @Override
        public void onResume() {
            super.onResume();
            final ViewTreeObserver observer = mContainer.getViewTreeObserver();
            observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
                @Override
                public void onGlobalLayout() {
                    int layoutHeight = mContainer.getHeight();
                    rowHeight = layoutHeight / getResources().getInteger(R.integer.rows);
                    mContainer.getViewTreeObserver().removeGlobalOnLayoutListener(this);
                    if (Build.VERSION.SDK_INT >= 16) {
                        mContainer.getViewTreeObserver().removeOnGlobalLayoutListener(this);
                    }
                });
            }
        }