没有“adjustResize”的KeyBoard上方的FloatingActionButton

时间:2016-07-26 07:46:55

标签: android keyboard floating-action-button

在我的应用中,我使用的是llvm-config --cxxflags --ldflags --libs allMapViewEditText(fab),我希望工厂在FloatingActionButton时移动到键盘上方点击。我发现在EditText中设置android:windowSoftInputMode="adjustResize"可以很好地与fab工作,但它也会调整背景中的地图大小,并且在调整大小时会产生非常难看的效果。

这是我的布局:

manifest

关于如何在不使用它的情况下获得“adjustResize”效果的任何想法?或者也许如何从调整大小中排除视图但保持“adjustResize”?

提前谢谢

2 个答案:

答案 0 :(得分:6)

经过一些研究,我最终通过在布局的根视图上添加GlobalLayoutListener来处理keyBoard,并绘制了该根视图当前可见部分的矩形。
我还在键盘的实际高度上添加了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));
            }

        }
    });
}

答案 1 :(得分:1)

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

android:fitsSystemWindows="true" 

属性