2012-04-15 6 views
2

私はアンドロイドタブレットシステムバーの高さが必要であるという問題があります。 hereと同じ問題ですが、DisplayMetricsと同じサイズになっているので、この答えは使用できません。両方の方法で、私はこのバーをすべて計算して解決します。 (この問題はスマートフォンに表示されず、タブレットに表示されます)。アンドロイドタブレットのシステムバーのサイズ

答えて

0

はここにこの答えをチェックアウト:https://stackoverflow.com/a/8367739/807499

をそれは、画面の完全な高さを提供します。次に、DisplayMetricsによって与えられたサイズ、またはあなたのルートレイアウトのサイズをマイナスします。

11
// status bar (at the top of the screen on a Nexus device) 
public static int getStatusBarHeight(Context context) { 
    Resources resources = context.getResources(); 
    int resourceId = resources.getIdentifier("status_bar_height", "dimen", "android"); 
    if (resourceId > 0) { 
     return resources.getDimensionPixelSize(resourceId); 
    } 
    return 0; 
} 

// navigation bar (at the bottom of the screen on a Nexus device) 
public static int getNavigationBarHeight(Context context) { 
    Resources resources = context.getResources(); 
    int resourceId = resources.getIdentifier("navigation_bar_height", "dimen", "android"); 
    if (resourceId > 0) { 
     return resources.getDimensionPixelSize(resourceId); 
    } 
    return 0; 
} 
+0

あなたのメソッドは全く同じです – Frank

+2

@Frank - 異なる値が 'getIdentifier()'の最初の引数として渡されます。 –

+0

非常にnice :) ...ありがとう – dijipiji

0

最近のDroidconの話では、Chris Banesがこれについて言及しました。話全体が関連性がありますが、質問に答えた部分へのリンクがあります(タブレットを含むすべてのフォームファクター)。

https://youtu.be/_mGDMVRO3iE?t=1093

これは、ステータスバーとナビゲーションバーのサイズを取得するための正しい方法である:setOnApplyWindowListener

私はこれが役に立てば幸い!

関連する問題