gpt4 book ai didi

android - fitSystemWindows 永远不会被调用

转载 作者:太空宇宙 更新时间:2023-11-03 10:20:23 28 4
gpt4 key购买 nike

我有一个 View 需要锚定到屏幕底部。在全屏模式下,它需要位于最底部,但在临时非全屏模式(用户点击)期间,它需要向上移动以免被系统栏隐藏。文档说设置 android:fitsSystemWindows=true 应该可以解决问题。或者您甚至可以重写 fitSystemWindows 以获取新边界并自行应用边距。

问题是这个方法从来没有被调用过,所以这个属性也不起作用,而且我似乎也无能为力。看起来 ActionBarOverlayLayout 上的 fitSystemWindows 是罪魁祸首:它始终从它的方法返回 true,这似乎取消了该方法到树中任何其他 View 的传播。但是,这是一个系统类,除了可能完全删除 actionbar 之外,我似乎无法让它停止这样做。

我知道我必须遗漏一些东西。是否只能设置一个 View 以避免被系统组件践踏?这只是一个视频播放器,我见过很多其他似乎没有这个问题的视频播放器。感谢您的帮助!

最佳答案

这里的问题是 fitSystemWindows 的默认实现吞没了所有 child 的事件,当您使用覆盖 ActionBar 时,您的整个 View 层次结构然后位于吞没您需要的事件的 View 下方。不幸的是,除了不使用 ActionBar 之外,您无能为力。

然后你必须记住,默认的 fitSystemWindows(在 ViewGroup 上定义)也会吞下所有兄弟的事件!所以,如果你想让兄弟 View 避开系统窗口,你需要编写您自己的 fitSystemWindows 并确保始终返回 false,以便事件将传播到可能需要它的其他 View 。

我理解为什么谷歌不会将事件发送给 child (因为插图是一个绝对位置,如果父 View 已经重新定位, child 不再需要担心),而是将它放在地板上以供所有 sibling views 一定是个错误。

关于android - fitSystemWindows 永远不会被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24173277/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com