Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android以编程方式获取可见布局的高度_Android_Xml_Android Fragments_Height_Tabbar - Fatal编程技术网

Android以编程方式获取可见布局的高度

Android以编程方式获取可见布局的高度,android,xml,android-fragments,height,tabbar,Android,Xml,Android Fragments,Height,Tabbar,我希望通过编程获得可视布局的确切高度,如图所示。我使用Sherlock fragment活动作为包含不同片段的主活动。我试图通过显示和显示矩阵获得屏幕的高度和宽度,但它给出了整个屏幕的高度和宽度。但我只想获得子活动的可见视图。请帮帮我。提前谢谢 主XML(Tabbar的) 子xml(子活动的xml) 它将获得整个窗口的高度 Display display = getWindowManager().getDefaultDisplay(); Displayheight = display.g

我希望通过编程获得可视布局的确切高度,如图所示。我使用Sherlock fragment活动作为包含不同片段的主活动。我试图通过显示和显示矩阵获得屏幕的高度和宽度,但它给出了整个屏幕的高度和宽度。但我只想获得子活动的可见视图。请帮帮我。提前谢谢

主XML(Tabbar的)


子xml(子活动的xml)


它将获得整个窗口的高度

Display display = getWindowManager().getDefaultDisplay();
Displayheight = display.getHeight();
现在测量动作条的高度

ActionBar actionBar = getActionBar();
actionBarHeight = actionBar.getHeight();
让我们拿一个tabHost&它是ex的高度

TabHost tabHost = getTabHost();
TabHost.TabSpec spec;
Intent intent;
intent = new Intent().setClass(this, vTab1.class);
spec = tabHost.newTabSpec("First").setIndicator("First").setContent(intent);
tabHost.addTab(spec);
intent = new Intent().setClass(this, vTab2.class);
spec = tabHost.newTabSpec("Second").setIndicator("Second").setContent(intent);tabHost.addTab(spec);
int height = tabHost.getTabWidget().getHeight();
现在从窗口高度减去actionbar和tabWidget的高度

DesiredArea = DisplayHeight - (actionBarHeight + height);

这可能是解决方案,也可以使用类似的逻辑类型。。我并不是说这个vl肯定有效

很抱歉打扰您,我通过其他答案解决了我的问题以获得一些想法,但我看到一些不推荐的方法建议解决它

用于操作栏和选项卡栏高度

     int tabHeight = mTabHost.getTabWidget().getHeight();
     int actionbarheight = getSupportActionBar().getHeight();//getActionbar() insted of for Api greater 13 than 
     Display display = getWindowManager().getDefaultDisplay(); 

    if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.HONEYCOMB_MR2)
    {

        width = display.getWidth();  // deprecated
        height = display.getHeight()- (tabHeight + actionbarheight + statusbarheight ); 
    }
    else {

        Point size1 = new Point();
        display.getSize(size1);
        width = size1.x;
        height = size1.y - (tabHeight + actionbarheight + statusbarheight);//visible layout height
    }
状态栏的高度

public int getStatusBarHeight() { 
      int result = 0;
      int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
      if (resourceId > 0) {
          result = getResources().getDimensionPixelSize(resourceId);
      } 
      return result;
} 

 int statusbarheight = getStatusBarHeight();
用于获取屏幕大小

     int tabHeight = mTabHost.getTabWidget().getHeight();
     int actionbarheight = getSupportActionBar().getHeight();//getActionbar() insted of for Api greater 13 than 
     Display display = getWindowManager().getDefaultDisplay(); 

    if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.HONEYCOMB_MR2)
    {

        width = display.getWidth();  // deprecated
        height = display.getHeight()- (tabHeight + actionbarheight + statusbarheight ); 
    }
    else {

        Point size1 = new Point();
        display.getSize(size1);
        width = size1.x;
        height = size1.y - (tabHeight + actionbarheight + statusbarheight);//visible layout height
    }
Display Display=getWindowManager().getDefaultDisplay();

if(Build.VERSION.SDK_INT)我之前尝试过,但它提供了整个屏幕高度。顺便说一句,“getHeight();”不推荐使用,因为API 13i在一段时间后解决了它。感谢您的详细解释
     Display display = getWindowManager().getDefaultDisplay(); 

    if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.HONEYCOMB_MR2)
    {

        width = display.getWidth();  // deprecated
        height = display.getHeight()- (tabHeight + actionbarheight + statusbarheight ); 
    }
    else {

        Point size1 = new Point();
        display.getSize(size1);
        width = size1.x;
        height = size1.y - (tabHeight + actionbarheight + statusbarheight);//visible layout height
    }