Bagaimana cara mendeteksi ketinggian bilah hitam di Moto 360?

Saya sedang mengembangkan aplikasi Android Wear dan konten di bagian paling bawah layar terpotong karena bilah hitam.

Video ini mengatakan bahwa kita harus mendapatkan ketinggian batang seperti ini:

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

tetapi kenyataannya barHeight selalu 0.

Saat ini saya sedang meretasnya

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

}

tapi itu tidak terlalu tahan terhadap masa depan. Ada petunjuk?


person David Vávra    schedule 26.12.2014    source sumber


Jawaban (1)


Saya menggunakan sisipan jendela untuk menentukan tinggi "dagu" di aplikasi Aktivitas Wear dan di mesin tampilan jam, sehingga berfungsi. Saya telah mengujinya pada Moto 360. Ini adalah ekstrak dari suatu Aktivitas:

@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
Oh begitu, sepertinya Anda perlu mengatur pendengar dalam metode onLayoutInflated, saya memanggilnya pada contoh GridViewPager. - person David Vávra; 03.02.2015