Как получить доступную высоту экрана минус панель навигации в HoneyComb? - PullRequest
8 голосов
/ 25 февраля 2011

Есть ли способ измерить высоту панели навигации внизу в пикселях?

Ответы [ 2 ]

6 голосов
/ 15 апреля 2011

Кстати ... для любого, как я, который наткнулся на этот вопрос в поисках действительного числа, это 48 пикселей (по крайней мере, на Motorola Xoom). Это было основано на результатах отладки этого (по общему мнению, сырого) теста Activity в сочетании с темой без строки заголовка (например, @android: style / Theme.NoTitleBar) и одиночным представлением LinearLayout, в котором высота и ширина установлены в match_parent "(например, созданный при создании нового приложения для Android):

package com.sample.layouttest;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnLayoutChangeListener;

public class Main extends Activity implements OnLayoutChangeListener {

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        View newView = getLayoutInflater().inflate(R.layout.main, null);
    newView.addOnLayoutChangeListener(this);
    setContentView(newView);
    }

    @Override
    public void onLayoutChange(View view, int left, int top, int right,
            int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
        Log.d("LayoutTest","left="+left+", top="+top+", right="+right+", bottom="+bottom);
    }
}

На Motorola Xoom под управлением Android 3.1 (а также на Samsung Galaxy 10.1V с версией 3.0) выход из метода onLayoutChange при входе в портретный режим:

05-24 15:11:43.047: DEBUG/LayoutTest(8658): left=0, top=0, right=800, bottom=1232

и при входе в ландшафт:

05-24 15:13:18.837: DEBUG/LayoutTest(8658): left=0, top=0, right=1280, bottom=752
4 голосов
/ 11 марта 2011

Тем временем я нашел решение.В honycomb появилось новое событие OnLayoutChangeListener, которое позволяет дождаться завершения макета и измерить размер макета вместо размера экрана.

...