ステータスバーの位置(上または下)をどのように見分けることができるかを理解しようとしています。確認しようとしましHierarchyViewer
たが、ステータス バー ビューが表示されませんでした。
本当に私が理解する必要があるのは、コンテキストが与えられた場合に (バーが一番上にある場合は true、そうでない場合は false -ほとんどのタブレットboolean
にはないように)を返す方法です。ステータスバーが上部または下部にあることを確認するための簡単な解決策を書きましたが、役に立たないようです:
private boolean isStatusBarAtTop(){
if (!(getContext() instanceof Activity)) {
return !getContext().getResources().getBoolean(R.bool.isTablet);
}
Window window = ((Activity) getContext()).getWindow();
if(window == null) {
return !getContext().getResources().getBoolean(R.bool.isTablet);
}
Activity activity = (Activity)getContext();
Rect rect = new Rect();
window.getDecorView().getWindowVisibleDisplayFrame(rect);
View ourView = window.findViewById(Window.ID_ANDROID_CONTENT);
Log.d("Menu","Window Top: "+ ourView.getTop() + ", "+ourView.getBottom()+ ", "+ourView.getLeft()+", "+ourView.getRight());
Log.d("Menu","Decor View Dimensions"+rect.flattenToString());
return ourView.getTop() != 0;
}
そして、何らかの理由で、次のような出力が得られます (Nexus 7 タブレットで実行):
D/Menu(1007): Window Top: 0, 0, 0, 0
D/Menu(1007): Decor View Dimensions0 0 800 1216
私は何を考えていますか/間違っていますか?