Android 10 修改导航栏的位置

Android 10 修改导航栏的位置
代码路径:
frameworks/base/servicescore/java/com/android/server/wm/DisplayPolicy.java
frameworks/base/core/java/android/view/WindowManagerPolicyConstants.java
代码修改:
1、在DisplayPolicy.java文件中navigationBarPosition()方法中控制导航栏的位置

@NavigationBarPosition
int navigationBarPosition(int displayWidth, int displayHeight, int displayRotation) {
    if (navigationBarCanMove() && displayWidth > displayHeight) {
        if (displayRotation == Surface.ROTATION_270) {
            return NAV_BAR_LEFT;
        } else if (displayRotation == Surface.ROTATION_90) {
            return NAV_BAR_RIGHT;
        }
    }
    return NAV_BAR_BOTTOM;
}

日志打印

09-16 19:12:41.524 14644 14684 D test: navigationBarPosition  NAV_BAR_LEFT 1
09-16 19:12:41.524 14644 14684 D test: navigationBarPosition  NAV_BAR_RIGHT 2
09-16 19:12:41.524 14644 14684 D test: navigationBarPosition  NAV_BAR_BOTTOM 4

备注说明:NAV_BAR_BOTTOM、NAV_BAR_RIGHT、NAV_BAR_LEFT其中该三个变量可以控制导航栏左边、右边、底部
2、在WindowManagerPolicyConstants.java文件中定义了NAV_BAR_BOTTOM、NAV_BAR_RIGHT、NAV_BAR_LEFT变量

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android Framework中,底部导航通常位于屏幕底部,用于导航应用程序的主要功能。要修改底部导航位置,可以考虑以下方法: 1. 使用RelativeLayout布局:可以将底部导航放置在屏幕底部,通过设置`android:layout_alignParentBottom="true"`属性来实现。这样可以确保底部导航始终位于屏幕底部。 2. 使用CoordinatorLayout布局:CoordinatorLayout是一个适用于复杂交互的布局,可以方便地控制子视图的位置。可以在CoordinatorLayout中嵌套一个AppBarLayout,并在AppBarLayout内部添加底部导航视图。通过设置`app:layout_anchorGravity="bottom"`属性,可以将底部导航与布局的底部对齐。 3. 修改系统样式:通过修改系统的主题样式,可以全局改变底部导航位置。可以创建一个新的主题,并在样式中设置`<item name="android:navigationBarPosition">floating</item>`属性来修改底部导航位置。根据具体需求,可以将其设置为"floating"、"landscape"或者"split",以实现不同的位置布局。 4. 自定义布局:如果以上方法无法满足需求,可以考虑自定义底部导航的布局。通过创建一个包含底部导航的自定义布局文件,并在Activity中引用该布局文件,可以实现完全自定义的底部导航位置。 需要注意的是,这些方法可能需要对代码进行一些修改,并且在不同版本的Android系统上可能会有兼容性问题。应根据具体的项目需求和目标设备进行适当的调整和测试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值