高度值:DecorView、ContentView、ActionBar、StatusBar、Screen、NavigationBar

//测试代码
@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    DisplayMetrics dm = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(dm);
    Log.d(TAG, "zwm, DecorView height: " + getWindow().getDecorView().getHeight());
    Log.d(TAG, "zwm, ContentView height: " + (getWindow().getDecorView().findViewById(android.R.id.content)).getHeight());
    Log.d(TAG, "zwm, ActionBar height: " + getActionBar().getHeight());
    Log.d(TAG, "zwm, StatusBar height: " + getStatusBarHeight());
    Log.d(TAG, "zwm, Screen height: " + dm.heightPixels);
    Log.d(TAG, "zwm, NavigationBar height: " + getNavigationBarHeight());
}

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

private int getNavigationBarHeight() {
    int height = 0;
    int resourceId;
    int config = this.getResources().getIdentifier("config_showNavigationBar", "bool", "android");
    if (config != 0) {
        resourceId = this.getResources().getIdentifier("navigation_bar_height", "dimen", "android");
        if(resourceId > 0) {
            height = this.getResources().getDimensionPixelSize(resourceId);
        }
    }
    return height;
}

//输出log
zwm, DecorView height: 2076
zwm, ContentView height: 1860
zwm, ActionBar height: 144
zwm, StatusBar height: 72
zwm, Screen height: 2076
zwm, NavigationBar height: 144

//结论
DecorView = ContentView + ActionBar + StatusBar
屏幕高度 = Screen + NavigationBar
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容