如何从输入法服务更改导航栏的颜色?

How to change the color of the navigation bar from an input method service?

我正在使用自定义键盘,因此我实现了一个 class,它实现了一个 InputMethodService。已经有很多关于在常规 activity 中更改导航栏颜色的帖子 - 这是通过调用 getWindow().setNavigationBarColor() 完成的,但我想对我的键盘做同样的事情:调整导航栏的颜色栏到我键盘的背景颜色!

InputMethodService 中,我可以通过 getWindow() 访问 window,但它是 SoftInputWindow class 的一个实例,所以它确实不提供 setNavigationBarColor 方法。有人知道如何实现吗?

有测试版的Gboard可以调整导航栏的颜色,看来是可以的...

尝试在 InputMethodService 中使用 getWindow().getWindow() 而不是仅使用单个 getWindow() 调用。

好像第一个getWindow()调用了returns一个SoftInputWindowDialog的一个类型,不过你可以在上面再调用getWindow()获得一个 PhoneWindow,它是一个合适的 Window,并且具有您正在寻找的功能。

如果您需要查看完整示例,here's a code sample from Google's own codebase。我最近自己 运行 遇到了这个问题,这个例子就是我想出的方法。