安卓智能手表表盘StatusBarGravity底部对齐无效。

4
我正在为Android Wear制作表盘。我希望将状态栏的位置放在底部而不是顶部。 文档说明使用WatchFaceStyle.Builder的setStatusBarGravity()方法:https://developer.android.com/reference/android/support/wearable/watchface/WatchFaceStyle.Builder.html#setStatusBarGravity(int)。 但是,这似乎没有按预期工作。每当我使用Gravity.BOTTOM时,图标会在表盘内垂直居中,而不是位于底部。 这是我使用的代码:
setWatchFaceStyle(new WatchFaceStyle.Builder(Watchface.this)
                .setShowUnreadCountIndicator(true)
                .setStatusBarGravity(Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM)
                .setAcceptsTapEvents(true)
                .build());

这导致了这个结果(注意中间的充电指示灯) img 我做错了什么?我已经谷歌和SO搜索过了,但是没有找到任何相关信息。

请查看相关讨论:https://stackoverflow.com/a/35003591/154306 - Paul Lammertsma
2个回答

2
您看到的,恐怕是Gravity.BOTTOM位置。状态栏图标的放置非常通用,底部对齐略低于实际垂直中心,而Gravity.CENTER_VERTICAL大约在屏幕的三分之一处。
以下是三个gravity值的图标放置说明:

Gravity values for Wear OS

记住,圆形屏幕不遵循水平重力值。
我知道这很令人沮丧,但恐怕就是这样。我建议在 b.android.com 提交问题以更改此行为。

顺便提一下,我认为这种行为是 Android Wear 1.0 中已经过时的窥视通知的遗留物。最初,手表表盘可以允许通知卡片从屏幕底部窥视。因此,系统图标不能与屏幕底部对齐。现在 setAmbientPeekMode() 已被移除,我希望图标位置能够很快得到更精细的控制。 - Paul Lammertsma

-2

请确保在竖线分隔符和Gravity常量之间没有空格,因为编译器会将其视为多个参数而不是一个单一的“统一”的Gravity连接参数。

有关更多信息,请参见文档中的“构建您的手表表盘:使用.setWatchFaceStyle()”。


这是我从未听说过的事情。管道字符只是按位或运算符,将Gravity常量组合成一个整数,对吗?无论如何,我尝试了一下,但它没有起作用。这是我预料到的,因为我也尝试过Gravity.BOTTOM而没有使用Gravity.CENTER_HORIZONTAL。不过还是谢谢你的帮助!任何帮助都会受到赞赏。 - Mavamaarten

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接