zhoubo526 发表于 2013-1-28 18:44:00

获取状态栏和标题栏的的高度

代码是参考某位仁兄的片段,以下是可行的完整测试代码:

package com.aslibra.test;

import android.app.Activity;
import android.graphics.Rect;
import android.os.Bundle;
import android.util.Log;
import android.view.Window;
import android.widget.ImageView;

public class test extends Activity {
ImageView iv;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    iv = (ImageView) this.findViewById(R.id.ImageView01);
    iv.post(new Runnable()
    {
      public void run()
      {
      viewInited();
      }
    }
    );
    Log.v("test", "== ok ==");
}

private void viewInited(){
    Rect rect= new Rect();
    Window window= getWindow();
    iv.getWindowVisibleDisplayFrame(rect);
    int statusBarHeight= rect.top;
    int contentViewTop= window.findViewById(Window.ID_ANDROID_CONTENT).getTop();
    int titleBarHeight= contentViewTop - statusBarHeight;
    //测试结果:ok之后 100多 ms 才运行了
    Log.v("test", "=-init-= statusBarHeight="+statusBarHeight+
      " contentViewTop="+contentViewTop+
      " titleBarHeight="+titleBarHeight);   
}

/*
   * 07-14 02:36:48.449: VERBOSE/test(1385): == ok ==
   * 07-14 02:36:48.558: VERBOSE/test(1385): =-init-= statusBarHeight=25 contentViewTop=50 titleBarHeight=25
   */
}




浏览器获取状态栏高度的代码
            Rect visRect = new Rect();
            if (!mBrowserFrameLayout.getGlobalVisibleRect(visRect)) {
                if (LOGD_ENABLED) {
                  Log.d(LOGTAG, "showFakeTitleBar visRect failed");
                }
                return;
            }
            params.y = visRect.top;
页: [1]
查看完整版本: 获取状态栏和标题栏的的高度