У меня ничего не работало, кроме 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), то это будет работать правильно.
Надеюсь, это поможет кому-то :)
person
Ranjit
schedule
06.07.2017