Как определить высоту черной полосы на Moto 360?

Я разрабатываю приложение для Android Wear, и содержимое в самом низу экрана обрезается из-за черной полосы.

В В этом видео говорится, что мы должны получить высоту полосы следующим образом:

@Override
public WindowInsets onApplyWindowInsets(View v, WindowInsets insets) {
   int barHeight = insets.getSystemWindowInsetBottom();
}

но на самом деле barHeight всегда равен 0.

Прямо сейчас я взламываю его с помощью

if (Build.MODEL.equals("Moto 360")) {

}

но это не очень перспективно. Любые подсказки?


person David Vávra    schedule 26.12.2014    source источник


Ответы (1)


Я использую вставки окна, чтобы определить высоту «подбородка» в приложении «Активность износа» и в механизме циферблата, так что это работает. Я тестировал на Moto 360. Это выдержка из Activity:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    final WatchViewStub stub = (WatchViewStub) findViewById(R.id.watch_view_stub);
    stub.setOnLayoutInflatedListener(new WatchViewStub.OnLayoutInflatedListener() {
        @Override
        public void onLayoutInflated(WatchViewStub stub) {
            stub.setOnApplyWindowInsetsListener(new View.OnApplyWindowInsetsListener() {
                @Override
                public WindowInsets onApplyWindowInsets(View v, WindowInsets insets) {
                    int chinHeight = insets.getSystemWindowInsetBottom();
                    // chinHeight = 30;
                    return insets;
                }
            });
        }
    });
}
person myanimal    schedule 01.02.2015
comment
О, я вижу, вам нужно установить прослушиватель в методе onLayoutInflated, я вызывал его в экземпляре GridViewPager. - person David Vávra; 03.02.2015