【问题标题】:FloatingActionButton above KeyBoard without "adjustResize"没有“adjustResize”的键盘上方的 FloatingActionButton
【发布时间】:2016-07-26 07:46:55
【问题描述】:

在我的应用程序中,我使用了MapViewEditTextFloatingActionButton(fab),并且我希望在单击EditText 时,fab 移动到键盘上方。我发现在manifest 中设置android:windowSoftInputMode="adjustResize" 与工厂配合得很好,但它也会调整我在背景中的地图的大小,并且在调整大小时会产生非常难看的效果。

这是我的布局:

<CoordinatorLayout>

   <MapView/>

   <RelativeLayout>

      <EditText/>

      other views ...

   </RelativeLayout>

   <FloatingActionButton/>

   other views ...

</CoordinatorLayout>

知道如何在不使用它的情况下获得“adjustResize”效果吗?或者也许如何从调整大小中排除视图但同时保持“adjustResize”?

提前谢谢你

【问题讨论】:

    标签: android keyboard floating-action-button


    【解决方案1】:

    经过一些研究,我最终通过在布局的根视图上添加GlobalLayoutListener 并为此根视图的当前可见部分绘制一个矩形来处理键盘。
    我还在键盘的实际高度上添加了 25dp,因为某些设备在键盘上方有一个建议栏,似乎包含在窗口的可见部分中。
    if 条件用于防止在 bottomSheet 展开时进行任何转换。

    private void handleKeyBoardApparition() {
        root.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {
                Rect r = new Rect();
    
                root.getWindowVisibleDisplayFrame(r);
    
                int heightDiff = root.getBottom() - r.bottom;
    
                int suggestionsBarHeight = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,25,getActivity().getResources().getDisplayMetrics());
    
                if(!bottomSheetIsVisible){
                    fabSearch.setTranslationY(-(heightDiff + suggestionsBarHeight));
                }
    
            }
        });
    }
    

    【讨论】:

      【解决方案2】:

      在布局 xml 中试试这个你的根视图,

      android:fitsSystemWindows="true" 
      

      财产

      【讨论】:

      • 对我来说,问题只是因为这条线而存在,但我需要它来做其他事情......
      猜你喜欢
      • 2018-09-26
      • 2017-06-22
      • 1970-01-01
      • 2019-09-18
      • 2011-03-25
      • 2021-06-20
      • 1970-01-01
      • 1970-01-01
      • 2011-11-01
      相关资源
      最近更新 更多