下面是我在我的活動中所做的工作,以確定我認識的特定視圖子視圖的內容佈局(本例中爲webview):
首先,從OnGlobalLayoutListener繼承:
public class ContainerActivity extends Activity implements ViewTreeObserver.OnGlobalLayoutListener {
...
接下來,實施onGlobalLayout監聽器的接口的方法(注意我做的,涉及到找出中等變焦蘸些像素Calcs(計算):
@Override
public void onGlobalLayout() {
int nH = this.mWebView.getHeight();
int nW = this.mWebView.getWidth();
if (nH > 0 && nW > 0)
{
DisplayMetrics oMetrics = new DisplayMetrics();
this.getWindowManager().getDefaultDisplay().getMetrics(oMetrics);
nH = (nH * DisplayMetrics.DENSITY_DEFAULT)/oMetrics.densityDpi;
nW = (nW * DisplayMetrics.DENSITY_DEFAULT)/oMetrics.densityDpi;
// do something with nH and nW
this.mWebView.getViewTreeObserver().removeGlobalOnLayoutListener
(this
);
...
}
}
最後,確保裏面,您正在收聽的onCreate()視圖元素(mWebView在這種情況下)告訴佈局事件:
this.setContentView(this.mWebView = new WebView(this));
this.mWebView.getViewTreeObserver().addOnGlobalLayoutListener
(this
);
這種方法適用於較舊的Android版本。我相信ics +對於每個你可以綁定的視圖都有一個佈局監聽器,因此可以以類似的方式使用它。
您可能需要在創建它 – sherpya
中的onDraw嘗試之前,使用http://developer.android.com/reference/android/util/DisplayMetrics.html你不能有客戶區() – muratonnet