У меня есть EditText в качестве панели поиска, расположенной внизу моего фрагмента, и я хочу переместить этот EditText вверх, когда клавиатура находится в открытом состоянии, и обратно, когда клавиатура закрывается. Я могу сделать это, когда с Keyboardlistener, но по ряду причин я хочу, чтобы мой windowSoftInput настраивался как noneN, а без настройки KeyboardListener не работал. Есть ли какой-нибудь возможный способ, которым я могу достичь этого без изменения режима windowSoftInput?
KeyboardVisibilityEvent.setEventListener(Objects.requireNonNull(getActivity()), new KeyboardVisibilityEventListener() {
@Override
public void onVisibilityChanged(boolean isOpen) {
moveSearchBar(isOpen);
}
});
private void moveSearchBar(boolean isOpen) {
Transition changeBounds = new ChangeBounds();
changeBounds.setDuration(1000);
changeBounds.setInterpolator(new LinearInterpolator());
TransitionManager.beginDelayedTransition(mDiscoverBinding.clDiscover,
changeBounds);
TransitionManager.beginDelayedTransition(mDiscoverBinding.clDiscover);
ConstraintSet constraintSet = new ConstraintSet();
constraintSet.clone(mDiscoverBinding.clDiscover);
if(isOpen) {
constraintSet.clear(R.id.et_search, ConstraintSet.BOTTOM);
constraintSet.connect(R.id.et_search, ConstraintSet.TOP, R.id.cl_discover, ConstraintSet.TOP, getResources().getDimensionPixelSize(R.dimen.dp_16));
constraintSet.connect(R.id.et_search, ConstraintSet.START, R.id.cl_discover, ConstraintSet.START, getResources().getDimensionPixelSize(R.dimen.dp_16));
constraintSet.connect(R.id.et_search, ConstraintSet.END, R.id.cl_discover, ConstraintSet.END, getResources().getDimensionPixelSize(R.dimen.dp_16));
} else {
constraintSet.clear(R.id.et_search, ConstraintSet.TOP);
constraintSet.connect(R.id.et_search, ConstraintSet.START, R.id.cl_discover, ConstraintSet.START, getResources().getDimensionPixelSize(R.dimen.dp_16));
constraintSet.connect(R.id.et_search, ConstraintSet.END, R.id.cl_discover, ConstraintSet.END, getResources().getDimensionPixelSize(R.dimen.dp_16));
constraintSet.connect(R.id.et_search, ConstraintSet.BOTTOM, R.id.cl_discover, ConstraintSet.BOTTOM, getResources().getDimensionPixelSize(R.dimen.dp_24));
}
constraintSet.applyTo(mDiscoverBinding.clDiscover);
}
Я могу переместить панель поиска с помощью приведенного выше кода, но если я изменю windowSoftInputMethod, чтобы настроить ничего, то это не работать, и мне нужно это как настроить ничего по некоторым причинам.