จะตรวจสอบความสูงของแถบสีดำบน 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)


ฉันใช้หน้าต่างที่แทรกเพื่อกำหนดความสูงของ "คาง" ในกิจกรรมของแอป Wear และในกลไกหน้าปัด ดังนั้นมันจึงใช้งานได้ ฉันได้ทดสอบกับ Moto 360 แล้ว นี่เป็นสารสกัดจากกิจกรรม:

@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
โอ้ ฉันเข้าใจแล้ว ดูเหมือนว่าคุณจะต้องตั้งค่า Listener ในเมธอด onLayoutInflated ฉันเรียกมันบนอินสแตนซ์ GridViewPager - person David Vávra; 03.02.2015