儘管之前已經回答了這個問題,但我認爲仍然值得努力做出更清楚的解釋。
如果你看看getLocationOnScreen的代碼和getLocationInWindow:
public void getLocationOnScreen(int[] outLocation) {
// It calls the getLocationInWindow
getLocationInWindow(outLocation);
// and adjust accordingly in case the window is not the top-level window
final AttachInfo info = mAttachInfo;
if (info != null) {
outLocation[0] += info.mWindowLeft; // refer image below
outLocation[1] += info.mWindowTop; // refer image below
}
}
public void getLocationInWindow(int[] outLocation) {
// do my calculation here
// by traversing views contained in this window (in a single tree of views)
...
}
這是下面的圖片,其中藍色表示屏幕&紅進一步解釋說明的窗口:
它需要注意的是,窗口可以是您的頂層窗口(覆蓋整個屏幕)或其他自定義窗口(如對話框)。
所以,回到你的問題:
getLocationOnScreen與狀態欄
這是正確的添加高度返回位置。手機的屏幕包括狀態欄查看
getLocationOnScreen和getLocationInWindow,他們都返回按鈕的相同位置與狀態欄的添加高度
那是因爲你正在使用的窗口是頂級可以覆蓋整個手機的屏幕。
可能重複的[getLocationOnScreen()vs getLocationInWindow()](http://stackoverflow.com/questions/17672891/getlocationonscreen-vs-getlocationinwindow) – stkent