1

我与Android的布局工作中,当我躲在前往付款按钮以及底视图当键盘被显示,类似的用户按BACK或完成按钮时在键盘的键盘现在隐藏的平均时间我显示保存地址按钮也底视图,要检查键盘的我使用 following solluation的知名度和它工作正常,但问题是当键盘隐藏它采取挺举作为布局重新调整安卓:避免挺举当隐藏软键盘

softKeyboardStateWatcher = new SoftKeyboardStateWatcher(mBinding.activityRoot); 

     softKeyboardStateWatcher.addSoftKeyboardStateListener(new SoftKeyboardStateWatcher.SoftKeyboardStateListener() { 

      @Override 
      public void onSoftKeyboardOpened(int keyboardHeightInPx) { 
       mBinding.actionProceedToPayment.setVisibility(View.GONE); 
       mHomeActivityImplementation.handleBottomTabs(false); 
      } 

      @Override 
      public void onSoftKeyboardClosed() { 
       mBinding.actionProceedToPayment.setVisibility(View.VISIBLE); 
       mHomeActivityImplementation.handleBottomTabs(true); 
      } 
     }); 

above code示出当键盘显示布局则毛刺将发生如layout是在调整大小,以避免这一点,我使用onPostDelay()如下所示

  @Override 
      public void onSoftKeyboardClosed() { 
       mBinding.activityRoot.postDelayed(new Runnable() { 
        @Override 
        public void run() { 
         mBinding.actionProceedToPayment.setVisibility(View.VISIBLE); 
         mHomeActivityImplementation.handleBottomTabs(true); 
        } 
       }, 100); 
      } 

但仍面临着同样的问题。我也申请CountDownTimer()但问题没有解决,是否有任何方法来避免这个混蛋?

回答

2

该混乱是因为布局渲染和调整其高度时,键盘隐藏或显示,这一切都取决于设备,因为我们有不同的设备与不同的处理器和GPU分别具有不同的时钟速度和帧速率,你会在不同的设备上发现不同的行为,在某些设备上,您可能没有任何混乱,并且在某些设备上您有一个小小的混乱,这一切都取决于设备中的处理器和GPU。

您可以将动画添加到您在隐藏和显示键盘时显示和隐藏的视图,这会使该混乱变得平滑一些。

3

首先,您正在使用的库,SoftKeyboardStateWatcher不可靠。您需要的功能未在Android框架中公开。它做出猜测,并且有许多情况会出现错误,并说没有键盘存在,反之亦然。所以任何依赖这个类的代码都会成为bug。我的建议是不提供这种类型的功能,因为它的工作原理取决于设备,操作系统版本,使用的键盘等。

其次,我不认为使用该库可避免混乱。猜测键盘显示的时间不会通知你,直到键盘扩展完成后。所以你会一直等到键盘改变,然后再进行更改。这总是会导致混蛋。您可以做的唯一事情就是使按钮动起来,而不仅仅是设置可见性。

+0

我同意@Gabe Sechan +1 –