У меня ничего не получалось, кроме adjustPan
согласно документации
Главное окно действия не изменено, чтобы освободить место для экранной клавиатуры. Скорее, содержимое окна автоматически панорамируется, так что текущий фокус никогда не скрывается клавиатурой, и пользователи всегда могут видеть, что они печатают. Как правило, это менее желательно, чем изменение размера, поскольку пользователю может потребоваться закрыть экранную клавиатуру, чтобы получить доступ к скрытым частям окна и взаимодействовать с ними.
Так что просто используйте его в вашем методе onCreate () или onCreateView (), например:
getDialog().getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
Или просто укажите android:windowSoftInputMode="adjustPan"
в манифесте для Activiry, в котором мы играем с диалогами
и используйте android:windowSoftInputMode="adjustResize|stateHidden"
в каждом тексте редактирования, который поможет пользователю легко перейти к следующему текстовому полю.
Точка для запоминания
Никогда не используйте MATCH_PARENT , чтобы сделать диалоговое окно полноэкранным, так как adjustPan
здесь не будет работать. Если кто-то хочет, чтобы диалоговое окно соответствовало экрану, просто используйте точки до 0,96 (не более этого) для высоты, чтобы клавиатура правильно достигла текста редактирования. Я сделал, как показано ниже:
@Override
public void onStart()
{
super.onStart();
Dialog dialog = getDialog();
if (dialog != null)
{
//int height = ViewGroup.LayoutParams.MATCH_PARENT;
int width = ViewGroup.LayoutParams.MATCH_PARENT;
Display display = getActivity().getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
//int width = (int)(size.x * 0.96);
int h = (int)(size.y * 0.96);
dialog.getWindow().setLayout(width, h);
}
}
Смотри, если я буду использовать общую высоту (MATCH_PARENT), то soft_keyboard закроет диалог. Но если я буду использовать точки для высоты (здесь 0,96, что почти близко к match_parent), то она будет работать правильно.
Надеюсь, это кому-нибудь поможет:)