使FAB响应软键盘显示/隐藏更改

我已经看过各种关于FAB响应屏幕底部的Snackbarpopup窗口的post以及滚动敏感的FAB。 但是有一些FloatingActionButton.Behavior (或类似的) 实现在popup时将FAB移动到键盘上方吗?

现在,当我在EditText框中单击时,键盘覆盖了FAB。 我的目标是为FAB设置animation,使其始终可见,与键盘状态无关。

编辑: android:windowSoftInputMode="adjustResize"...="adjustPan"都不会改变任何东西。 好吧, adjustResize调整底层布局(在我的情况下是一张地图),但FAB不会移动。

嗨,我知道它已经老了,但对于未来或现在的读者/搜索者以及线程制作者,他还没有find答案。 这就是我在我的应用程序中有这种行为的方式。

Fab隐藏在RecyclerView滚动上,当小吃店popup时上升,如果没有显示fab并且快餐栏popup,如果你滚动那么仍然Fab将显示在小吃店的顶部并且当SB消失时将向下移动并且如果它在键盘上则向下移动打开Fab会被推高。 (对不起,我不得不写因为我不知道如何用eclipse模拟器给gif)

图片

在此处输入图像描述

布局

          

正如您所看到的,我正在使用FabAnimation类来覆盖它的一些默认方法。

ScrollingFABAnimation

 import android.content.Context; import android.support.design.widget.CoordinatorLayout; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.Snackbar; import android.support.v4.view.ViewCompat; import android.util.AttributeSet; import android.view.View; public class ScrollingFABAnimation extends CoordinatorLayout.Behavior { public ScrollingFABAnimation(Context context, AttributeSet attrs) { super(context, attrs); } //For SnackBar to push up the Floating Button when it pops up @Override public boolean layoutDependsOn(CoordinatorLayout parent, FloatingActionButton child, View dependency) { return dependency instanceof Snackbar.SnackbarLayout; } @Override public boolean onDependentViewChanged(CoordinatorLayout parent, FloatingActionButton child, View dependency) { float translationY = Math.min(0, dependency.getTranslationY() - dependency.getHeight()); child.setTranslationY(translationY); return true; } //For FAB to hide or show on scroll @Override public boolean onStartNestedScroll(CoordinatorLayout coordinatorLayout, FloatingActionButton child, View directTargetChild, View target, int nestedScrollAxes) { return nestedScrollAxes == ViewCompat.SCROLL_AXIS_VERTICAL || super.onStartNestedScroll(coordinatorLayout, child, directTargetChild, target, nestedScrollAxes); } @Override public void onNestedScroll(CoordinatorLayout coordinatorLayout, FloatingActionButton child, View target, int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed) { super.onNestedScroll(coordinatorLayout, child, target, dxConsumed, dyConsumed, dxUnconsumed, dyUnconsumed); if (dyConsumed > 0 && child.getVisibility() == View.VISIBLE) { child.hide(); } else if (dyConsumed < 0 && child.getVisibility() != View.VISIBLE) { child.show(); } } } 

我有同样的问题,我试图在我的根视图中添加一个ScrollView但它不起作用,因为内容不超过显示器的高度(在这种情况下,工厂反应如预期)。

所以我尝试了android:windowSoftInputMode="adjustResize" ,它对我android:windowSoftInputMode="adjustResize"

对于这里的信息,我的布局xml看起来像:

 < ?xml version="1.0" encoding="utf-8"?>     

它是一个Fragment在一个活动中膨胀(在一个FrameLayoutmatch_parent根视图),我在清单中添加了android:windowSoftInputMode="adjustResize"