在我的应用中,我使用的是llvm-config --cxxflags --ldflags --libs all
,MapView
和EditText
(fab),我希望工厂在FloatingActionButton
时移动到键盘上方点击。我发现在EditText
中设置android:windowSoftInputMode="adjustResize"
可以很好地与fab工作,但它也会调整背景中的地图大小,并且在调整大小时会产生非常难看的效果。
这是我的布局:
manifest
关于如何在不使用它的情况下获得“adjustResize”效果的任何想法?或者也许如何从调整大小中排除视图但保持“adjustResize”?
提前谢谢
答案 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"
属性