【发布时间】:2016-12-29 13:47:16
【问题描述】:
借助 Android 的多窗口支持,我如何检测状态栏是否可见?例如,在纵向时,如果我是顶部应用程序,状态栏可能可见,但当我是底部应用程序时,状态栏将不可见。现在,我的视图在底部时很有趣,因为我为不再存在的状态栏腾出了空间。
【问题讨论】:
-
不要以编程方式为状态栏腾出空间。使用 android:fitsSystemWindows , View.onApplyWindowInsets(), View.setOnApplyWindowInsetsListener(), Behavior.onApplyWindowInsets() ... 。这是一项艰巨的工作,但您不能依赖状态栏,我们在 N 之前就知道。我建议您花时间使用 WindowInsets 重新实现所有内容。
-
WindowInsets 以编程方式提供信息,但速度很慢。在找出真正的插图是什么之前,您会接到多个电话。
-
至于重新实现,我不想。我依赖于许多视图和一些库。它们并不都适合系统窗口。在所有制造商中重新实施和测试 Jelly Bean、KitKat 和 Marshmallow 是最后的手段。
-
是的,您将接到多个电话。这也是获得插图的唯一可靠方法。您认为 NavigationView 或 DrawerLayout 等支持库中的小部件如何处理它?没错,window insets listener(或者更确切地说是它的兼容对应物)。
-
I don’t want to- 我也不想要。但是这样我就可以优雅地更新到 N 了。这些建议必须遵循,否则您迟早会发现您的应用程序由于新的 API、新的制造商、具有不可预测插入的新设备而变得一团糟。
标签: android multi-window