问题标签 [windowinsets]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - WindowInsetsControllerCompat.OnControllableInsetsChangedListener 不会触发插入显示操作
我有这个听众:
我将它添加到instetsController
这样的:
当我执行时它工作正常:
但是当我点击我的屏幕并显示导航栏时,这个监听器永远不会触发,从我在文档中阅读的内容来看,它应该。
我知道这个监听器在我隐藏系统栏时起作用,因为我可以看到它将消息打印到我的 logcat 中。
android - 当屏幕强制旋转时,WindowInsets 总是返回 0
当我得到宽度和高度的屏幕尺寸时,我以前使用WindowManager().getDefaultDisplay().getMetrics(metrics)
过,这是下面的整个代码。
但在 Android 11中,getDefaultDisplay().getMetrics(metrics)
已弃用。
所以我找到了“WindowInsets”,它在屏幕显示时运行良好。
当屏幕从纵向到纵向或从横向到横向时,它也能很好地工作。
但有一个问题。当我强行将屏幕从纵向旋转到横向时,WindowInsets无法获得准确的当前显示尺寸。
详细地说,它是 3 步。
1. 启动应用程序。
2.应用一启动,屏幕就强制从纵向转为横向。
3. WindowInsets 无法获取Insets.right
and Insets.left
。
这是获取显示大小的整个代码。
屏幕旋转后如何获得Insets.right
and ?Insets.left
另外
,我发现了一些线索。请检查以下内容。
当我再次启动应用程序时,它会获得正确的值(宽度,高度),但当我第一次启动应用程序时它不能。
在第二次,我关闭应用程序并触摸主屏幕,然后重新启动应用程序,它无法获得正确的宽度和高度。
如果您不触摸或拖动主屏幕,即使关闭应用程序,您也可以获得正确的宽度、高度。
所以它运行得很奇怪。
android - WindowInsets 与 InputMethodManager !在android中显示和隐藏软键的正确方法
我应该使用什么;WindowInsets或InputMethodManager在 android 中显示和隐藏软键盘?在不影响应用程序性能的情况下,哪种方法是执行所引用任务的正确方法?
我希望键盘显示和隐藏流畅。
android - OnApplyWindowInsetsListener 在横向模式下检测键盘可见性变化
多亏了这个很好的答案:https ://stackoverflow.com/a/63595830/741795我们现在可以跟踪键盘何时在 Android 中显示...不幸的是,我发现了一些问题。
事实证明,对于 API 29 及更低版本,OnApplyWindowInsetsListener.onApplyWindowInsets
仅调用了:
- 当活动在清单中有“adjustResize”标志时
- 仅适用于纵向模式。
对于 api 30+,一切都适用于纵向和横向,并且没有标志。
由于这些限制,对于 api 29- 我使用不同的方法(见下面的代码),使用OnGlobalLayoutListener.onGlobalLayout
然后是实际的听众:
问题:onGlobalLayout
当键盘在横向模式下显示/隐藏时不调用,我在许多模拟器和手机上尝试过,它确实适用于平板电脑。
我找到了这个示例项目:https ://github.com/android/user-interface-samples/tree/master/WindowInsetsAnimation但在 API 21-29 中也不会调用这些方法,这对于动画来说很好,但是不是我的情况,所以那里一定有问题。我到处搜索,根本没有找到任何有关此的信息。
更多信息:这将是一个 SDK 代码,所以我不能指望用户在清单中设置任何标志或我正在使用的任何 fitSystemWindows 标志,androidx.core:core-ktx:1.5.0
但 1.6.0 有同样的问题。
关于我可以尝试什么的任何想法?我怀疑窗口不同,因为键盘与editText一起占据了整个屏幕,但为什么它可以与新的APIS一起使用?
android - Android 11 全屏与协调器布局状态栏间距问题
我在 Android 11 中面临全屏沉浸式模式的问题。我的主要活动布局文件看起来像这样,
我正在尝试从我的片段中显示全屏模式。在 Android 11 之前,我曾经从 Fragment 的 onCreate 视图调用以下函数
我将其替换为,
这会按预期删除状态栏,但会在状态栏区域的屏幕顶部留下一个空白区域
带状态栏:
状态栏已移除:
我试图测量片段内的窗口插图并调整片段容器的高度
但是我的 ViewCompat.setOnApplyWindowInsetsListener 永远不会被调用。根据本文,Coordinator Layout 使用 onApplyWindowInsets 回调,并且子级不会收到任何回调。rootView
是我的 Fragment 的根视图(一个相对布局),它被放置在我的布局层次结构中的 FragmentContainer 中。
Android 10 和 11 之间的比较
我的问题:
- 我应该如何
setOnApplyWindowInsetsListener
在片段中调用我的方法? - 当状态栏隐藏时,我应该如何让我的协调器布局知道占据全屏?
参考:协调器布局消耗回调:
android - 为响应出现的 android 导航插图做一些事情
我正在寻找一种在用户从侧面滑动以显示菜单后以全屏模式显示我的 NavigationRailView 的方法(当应用 WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE 时)我想让我的 NavigationRailView 可见并消失。有什么方法可以听到这种变化吗?
android - setOnApplyWindowInsetsListener - statusBar 颜色问题
为什么当我使用
setOnApplyWindowInsetsListener
状态栏颜色消失?
java - 如何使用 WindowInsetsController 在 android 11 上更改状态栏文本颜色?
我正在看这个教程视频,并写了一个简单的方法来自定义我的 statusBar 和 navigationBar 颜色。这是代码:
它大部分都在工作。
问题
但在 android 11 上,statusBar 文本颜色没有改变。谁能帮助我或告诉我如何更改 statusBar 文本颜色?
如果您在片段中,以下是该方法的示例用法:
请注意,我不想使用已弃用的标志或旧代码。我想学习使用windowInsetsController
. 感谢您的阅读。
编辑
我的问题被关闭了。但是调试了1天后,我发现了问题。已设置标志window.decorView.windowSystemUiVisibility
。View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
所以在调用我的方法之前,我只是简单地调用了这段代码:
这为我解决了问题。总之谢谢大家。