Android导航栏在横向方向上的位置

问题描述

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

解决方法

我最后使用OrientationEventListener,它以degrees的形式返回设备的方向,orientation中的值取决于设备的倾斜方式,范围为0-360您可能想实时Toast的值,以了解哪个度数是反向风景,哪个度数是风景,这很棘手,但是可以完成工作。纵向为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();
        }

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...