Android JetPack导航:键盘将导致任何导航片段视图大小为0



我的问题听起来很奇怪,但我会很快就我的观点。

我已经重构了一个项目,以将完整的东西转换为生命周期 导航(例如,使用ViewModelNavController(。

在我的一个导航图中,用户签名,有一个Fragment,其中有一个传统的EditText,以便用户可以输入他所需的昵称。

问题:如果用户开始首先输入他的昵称,从而提示他的软键盘,则将用户导航到的任何下一个Fragment(使用NavController#navigate(,内容为空白:没有任何内容向上。

为了解决问题的根源,我进行了以下测试(使用吐司,断点等(:

  1. 在导航到Fragment ;
  2. 时,检查onCreateViewonAttached方法是否会击中
  3. 通过设置强背景颜色,检查目标片段的膨胀视图是否可见(从未见过颜色(;
  4. 在目标片段上使用 onGlobalLayout夸大视图:有时,方法从未调用,但是当被调用时, height and width 均为 0 >。

这样就这样了。键盘弹出后,任何导航的片段都将其视图高度和宽度设置为0。至少,任何导航都会导致onCreateView调用。

注意:在揭示EditText的片段中,我使用:

quienteactivity((。getWindow((。setSoftInputmode( windowmanager.layoutparams.soft_input_adjust_pan(;

但删除此代码没有问题。

我正在使用版本: 2.1.0-Alpha05 (发布时最新(。我还尝试了稳定版本 2.0.0 ,但我也有同样的问题。

编辑1

没关系,似乎新的ConstraintLayout 2.0.0 beta 02是罪魁祸首(带回收器视图引起了很多问题(,而新的后退导航机制https://developer.android.com/guide/guide/navigation/navigation/navigation/navigation-custom-back(开始使用AppCompat 1.1.0-alpha05(在我的应用中引起其他问题。

我可以确认问题出现在2.0.0-beta2中,并且在androidx.constraintlayout中使用了2.0.0-beta3:beteraintlayout:benteraintlayout。就我而言,当我从带键盘的片段导航到另一个带有约束layout的片段时,即使我将其隐藏在以前的片段中并等待直到隐藏到它。

相关内容

  • 没有找到相关文章

最新更新