0

我需要在我的应用程序中以像素为单位获取标签的高度(如图所示)。我需要一些信息来帮助我了解 Tab 的高度取决于屏幕尺寸。谁能帮我?

提前致谢在此处输入图像描述

说实话我在代码中不需要 Tab 的大小,我认为每个大小相同的设备都有相同的 Tab 高度,所以我想知道屏幕的哪个部分会占用我的 Tab ,

例如,我有 1080 X 720 像素的设备,我的选项卡将占 1/10 部分,这意味着选项卡的高度将为 108 像素

4

1 回答 1

0

我之前在评论中的意思是,这里有许多流行的解决方案来获取任何 android 视图的高度和宽度。我现在已经测试了这段代码,它工作正常。尝试这个:

final RelativeLayout topLayout  = (RelativeLayout) findViewById(R.id.topRelLayout);
        ViewTreeObserver viewTreeObserver = topLayout.getViewTreeObserver();
        if (viewTreeObserver.isAlive()) {
          viewTreeObserver.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {
                if(Integer.valueOf(android.os.Build.VERSION.SDK_INT) >= 16)
                topLayout.getViewTreeObserver().removeOnGlobalLayoutListener(this);
                else
                topLayout.getViewTreeObserver().removeGlobalOnLayoutListener(this);
             int  viewWidth = tabs.getWidth();
              int viewHeight = tabs.getHeight();

              Toast.makeText(HomeScreenActivity.this, "height = "  + viewHeight + " width = " + viewWidth , 2000).show();
            }
          });
        }

其中 topRelLayout 是您的 xml 文件的根布局的 id,而 tabs 是对您的选项卡视图的引用。

即使遵循简单的代码也可以正常工作。

tabs.post(new Runnable() {
            @Override
            public void run() {
                int w = tabs.getMeasuredWidth();
                int h = tabs.getMeasuredHeight();
                Toast.makeText(HomeScreenActivity.this, "height = "  + h + " width = " + w , 2000).show();
            }
        });

使用任何一种解决方案,您都可以获得任何屏幕尺寸的任何视图的高度/宽度。

编辑 :

阅读您编辑的问题后,我假设您需要 Tab 小部件占用了多少屏幕百分比。我知道可以实施的唯一解决方案是:

WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
         final   Display display = wm.getDefaultDisplay();

            tabs.post(new Runnable() {
                @Override
                public void run() {
                    int h = tabs.getMeasuredHeight();
                    int screenHeight = 0;
                    if(Integer.valueOf(android.os.Build.VERSION.SDK_INT) >= 13)
                    {
                        Point point = new Point();
                     display.getSize(point);
                     screenHeight = point.y;
                    }
                    else
                        screenHeight = display.getHeight();
                    double tabPart = (((double)h/(double)screenHeight) * 100); 
                    Toast.makeText(HomeScreenActivity.this, "height = "  + screenHeight + " tabPart = " + tabPart  + " %", 2000).show();


                }
            });
于 2013-02-05T06:38:40.670 回答