我有一个DialogFragment,通常位于屏幕中央,我正在尝试将其移开以避免挡住屏幕键盘(如果有),因为当有未使用的屏幕空间时,键盘覆盖窗口的部分区域不是良好的用户体验。
假设我已经解决了检测键盘出现或消失的问题,例如如何在Android中检查软件键盘的可见性?。
目前,我通过执行以下操作来将窗口移开:
这个工作正常,但窗口突然跳到位,这不是一个愉快的UX体验。所涉及的窗口有成功的进入和退出动画,即使在窗口布局更改后也适当地工作。如何在WindowManager.LayoutParams更改时进一步动画化窗口?
(如果可能的话,我更喜欢在布局方面继续工作/在http://developer.android.com/reference/android/view/Window.html中而不是将DialogFragment强制放入我的Activity布局中并从那里进行动画处理)。
假设我已经解决了检测键盘出现或消失的问题,例如如何在Android中检查软件键盘的可见性?。
目前,我通过执行以下操作来将窗口移开:
...
final WindowManager.LayoutParams params = dialog.getWindow().getAttributes();
params.gravity = Gravity.TOP;
params.verticalMargin = .1f; //or whatever
dialog.getWindow().setAttributes(params);
...
这个工作正常,但窗口突然跳到位,这不是一个愉快的UX体验。所涉及的窗口有成功的进入和退出动画,即使在窗口布局更改后也适当地工作。如何在WindowManager.LayoutParams更改时进一步动画化窗口?
(如果可能的话,我更喜欢在布局方面继续工作/在http://developer.android.com/reference/android/view/Window.html中而不是将DialogFragment强制放入我的Activity布局中并从那里进行动画处理)。
android:windowSoftInputMode="stateHidden|adjustPan"
吗?这可能能够自动保持活动视图显示。我倾向于在其他功能中使用它,但还没有尝试过在 DialogFragment 中使用。 - AnonsageDialogFragment
代替。 - S.D.