Переместите EditText снизу вверх и наоборот, когда клавиатура открывается или закрывается с помощью windowSoftInput как настройкаNothing - PullRequest
0 голосов
/ 26 февраля 2020

У меня есть 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, чтобы настроить ничего, то это не работать, и мне нужно это как настроить ничего по некоторым причинам.

1 Ответ

0 голосов
/ 26 февраля 2020

Вы должны использовать android: windowSoftInputMode = "AdjustResize" в манифесте.

...