0

在横向中,我需要知道导航栏是在屏幕的右侧还是左侧,以便我可以使用 WindowInsets 将填充应用于 LinearLayout 以防止 LinearLayout 与导航栏重叠。

4

1 回答 1

0

我最终使用OrientationEventListenerwhich 返回设备的方向,其degrees形式orientationToast横向,哪个是横向,它很hacky,但可以完成工作。纵向范围为0-50,横向范围为55-120,反向横向> 250,但如果方向迅速,则可以低至200已更改。-1 的方向表示设备平放在表面上。在反向横向中navigation bar,在右侧,而在横向中,在左侧。

orientationListener = new OrientationEventListener(this,
                SensorManager.SENSOR_DELAY_NORMAL) {

            @Override
            public void onOrientationChanged(int orientation) {
                if(orientation>250){//reverse landscape
                     isReverse=true;
                     }
                else {
                    isReverse=false;
                }
            }
        };

        if (orientationListener.canDetectOrientation()) {

            orientationListener.enable();
        } else {
            orientationListener.disable();
        }
于 2020-10-31T15:25:04.740 回答