系统指标不尊重Gravity.BOTTOM

System indicators do not respect Gravity.BOTTOM

我使用了演示模拟表盘,并尝试使用 setStatusBarGravity(Gravity.BOTTOM) 让系统指示器出现在底部。似乎没有尊重这种特殊的引力。

setWatchFaceStyle(new WatchFaceStyle.Builder(AnalogWatchFace.this)
        .setCardPeekMode(WatchFaceStyle.PEEK_MODE_SHORT)
        .setBackgroundVisibility(WatchFaceStyle.BACKGROUND_VISIBILITY_INTERRUPTIVE)
        .setShowSystemUiTime(false)
        .setStatusBarGravity(Gravity.BOTTOM)
        .setHotwordIndicatorGravity(Gravity.BOTTOM)
        .build());

通过将其设置为此值,指示器(和 "Ok Google" 热词指示器)会出现在屏幕中央。在圆形设备上,它们完全居中,在方形设备上,它们在左侧垂直居中。

我知道 Android Wear 上的一个问题,即在应用程序重新启动之间指标没有更新,但我已经尝试切换表盘甚至完全重新安装它。我也尝试过使用 setStatusBarGravity() 结合水平对齐和二进制 OR,但方形设备只考虑水平重力。

知道问题出在哪里吗?

看来Gravity.BOTTOM有点误导;垂直对齐不是在屏幕底部,而是在一些预设位置bottom-most

指标的位置似乎是相对的;在任何可能的偷看卡片上方 在热词指示器上方,如果它也设置为 Gravity.BOTTOM.

我发现如果我设置setHotwordIndicatorGravity(Gravity.CENTER),系统指标看起来比将两个指标都设置为Gravity.BOTTOM略低。这不是理想的,但这是我能得到的最好的。 这似乎不再是 Wear OS 的情况。

我计算了 390px 圆形显示的位置为:

  • Gravity.TOP: 8.7%
  • Gravity.CENTER_VERTICAL: 39.0%
  • Gravity.BOTTOM: 57.4%