1. 程式人生 > >Android獲取狀態欄和標題欄的高度

Android獲取狀態欄和標題欄的高度

splay tool pbo epub pan float .post test extends

1.獲取狀態欄高度:

decorView是window中的最頂層view,可以從window中獲取到decorView,然後decorView有個getWindowVisibleDisplayFrame方法可以獲取到程序顯示的區域,包括標題欄,但不包括狀態欄。
於是,我們就可以算出狀態欄的高度了。

[Java] view plain copy
  1. Rect frame = new Rect();getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);int statusBarHeight = frame.top;

2.獲取標題欄高度:

getWindow().findViewById(Window.ID_ANDROID_CONTENT)這個方法獲取到的view就是程序不包括標題欄的部分,然後就可以知道標題欄的高度了。

[java] view plain copy
  1. int contentTop = getWindow().findViewById(Window.ID_ANDROID_CONTENT).getTop();//statusBarHeight是上面所求的狀態欄的高度int titleBarHeight = contentTop - statusBarHeight

例子代碼:

[java]
view plain copy
  1. package com.cn.lhq;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 Main extends Activity {ImageView iv;@Overridepublic 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);}}
[xhtml] view plain copy
  1. <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"><ImageView android:id="@+id/ImageView01" android:layout_width="wrap_content" android:layout_height="wrap_content"/></LinearLayout>

Android獲取狀態欄和標題欄的高度