如何从输入法服务更改导航栏的颜色?
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一个SoftInputWindow
是Dialog
的一个类型,不过你可以在上面再调用getWindow()
获得一个 PhoneWindow
,它是一个合适的 Window
,并且具有您正在寻找的功能。
如果您需要查看完整示例,here's a code sample from Google's own codebase。我最近自己 运行 遇到了这个问题,这个例子就是我想出的方法。
我正在使用自定义键盘,因此我实现了一个 class,它实现了一个 InputMethodService
。已经有很多关于在常规 activity 中更改导航栏颜色的帖子 - 这是通过调用 getWindow().setNavigationBarColor()
完成的,但我想对我的键盘做同样的事情:调整导航栏的颜色栏到我键盘的背景颜色!
在 InputMethodService
中,我可以通过 getWindow()
访问 window,但它是 SoftInputWindow
class 的一个实例,所以它确实不提供 setNavigationBarColor
方法。有人知道如何实现吗?
有测试版的Gboard可以调整导航栏的颜色,看来是可以的...
尝试在 InputMethodService
中使用 getWindow().getWindow()
而不是仅使用单个 getWindow()
调用。
好像第一个getWindow()
调用了returns一个SoftInputWindow
是Dialog
的一个类型,不过你可以在上面再调用getWindow()
获得一个 PhoneWindow
,它是一个合适的 Window
,并且具有您正在寻找的功能。
如果您需要查看完整示例,here's a code sample from Google's own codebase。我最近自己 运行 遇到了这个问题,这个例子就是我想出的方法。