gpt4 book ai didi

Android Jetpack 导航 : keyboard will cause any navigated Fragment view size to be 0

转载 作者:行者123 更新时间:2023-11-29 00:53:53 26 4
gpt4 key购买 nike

我的问题听起来很奇怪,但我很快就会明白我的意思。

我重构了一个项目,以便将整个项目转换为生命周期 + 导航(例如,使用 ViewModelNavController)。

在我的一个导航图中,用户注册的地方有一个 Fragment,其中有一个传统的 EditText,这样用户就可以输入他想要的昵称.

问题:如果用户首先开始输入他的昵称,从而提示他的软键盘,那么用户导航到的任何下一个 Fragment(使用 NavController#navigate),内容是空白的:什么都没有显示。

为了找出问题的根源,我做了以下测试(使用 Toasts、断点等):

  1. 在导航到 Fragment 时检查 onCreateViewonAttached 方法是否被触发 ;
  2. 通过设置强烈的背景色(从未见过该颜色)来检查目标 Fragment 的膨胀 View 是否可见;
  3. 在目标 Fragment 膨胀 View 上使用 onGlobalLayout:有时,方法永远不会被调用,但是当它被调用时,heightwidth 都是0

原来如此。一旦键盘弹出,任何导航的 Fragment 都会将其 View 高度和宽度设置为 0。至少,任何导航都会调用 onCreateView

注意:在公开 EditText 的 fragment 中,我使用:

requireActivity().getWindow().setSoftInputMode( WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);

但是删除这段代码没有问题。

我使用的版本:2.1.0-alpha05(发布时的最新版本)。我也试过稳定版 2.0.0 但我有同样的问题。

编辑 1

没关系,新的 ConstraintLayout 2.0.0 beta 02 似乎是罪魁祸首(导致回收站 View 出现很多问题)以及新的后退导航机制 https://developer.android.com/guide/navigation/navigation-custom-back (从 AppCompat 1.1.0-alpha05 开始)导致我的应用出现其他问题。

最佳答案

我可以确认该问题出现在 2.0.0-beta2 中,并且在 androidx.constraintlayout:constraintlayout 中随 2.0.0-beta3 一起消失。在我的例子中,当我从一个键盘可见的 fragment 导航到另一个带有 ConstraintLayout 的 fragment 时,后一个 fragment 的页面高度恰好小于键盘高度,即使我将它隐藏在前一个 fragment 中并等待它隐藏。

关于Android Jetpack 导航 : keyboard will cause any navigated Fragment view size to be 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56738877/

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