3

私は現在、Android用のOpenGLアプリを開発しています。これまでのところすべて正常に動作していますが、ナビゲーションバーは少し邪魔です...

ナビゲーションバーが横向きのときの私の銀河のネクサスのように右側にあるのか、タブレットのように下部にあるのかを確認する方法はありますか?さらに、ナビゲーションバーの高さと幅が必要です。

誰かが私がこれを達成する方法を知っていますか?

ありがとう

4

3 に答える 3

1

私は自分の問題の解決策を見つけました:

    Display display = getWindowManager().getDefaultDisplay();
    Point size = new Point();
    display.getSize(size); 
    width = size.x;
    height = size.y;

コードのこの部分の後、幅と高さには、ナビゲーションバーまたは通知バーを含まない高さと幅が含まれます。

于 2012-08-26T18:05:09.100 に答える
1

私はこのようにそれをしました:

boolean hasMenuKey = ViewConfiguration.get(getApplicationContext())
                .hasPermanentMenuKey();

//メニューキーがない場合はナビゲーションバーがあります

if (!hasMenuKey && Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
         DisplayMetrics dm = new DisplayMetrics();
            getWindowManager().getDefaultDisplay().getMetrics(dm);

            if (dm.heightPixels%10!=0) {
            //navigation bar is on bottom
            } else {
               //navigation bar is on right side
            }

        }
于 2014-08-26T10:38:47.127 に答える
1

ナビゲーションバーとステータスバーをエレガントに処理する方法を探している人のために、ここに投稿してください。

この投稿を参照してください。

同様の質問の多くで示唆されているように、たとえば、 thisthisthisthisは、ナビゲーションバーの高さを取得するだけでは不十分な場合があります。1.ナビゲーションバーが存在するか、2。下部にあるか、右または左にあるか、3。アプリがマルチウィンドウモードで開いているかどうかを検討する必要があります。

シンプルなワンラインソリューションがあります

android:fitsSystemWindows="true"

またはプログラムで

findViewById(R.id.your_root_view).setFitsSystemWindows(true);

ルートビューを取得することもできます

findViewById(android.R.id.content).getRootView();
or
getWindow().getDecorView().findViewById(android.R.id.content)

ルートビューの取得の詳細については、https://stackoverflow.com/a/4488149/9640177を参照してください

于 2020-03-07T07:23:41.627 に答える