Android以编程方式获取可见布局的高度
我希望通过编程获得可视布局的确切高度,如图所示。我使用Sherlock fragment活动作为包含不同片段的主活动。我试图通过显示和显示矩阵获得屏幕的高度和宽度,但它给出了整个屏幕的高度和宽度。但我只想获得子活动的可见视图。请帮帮我。提前谢谢 主XML(Tabbar的)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
子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
}