Программная клавиатура изменяет размер фонового изображения

У меня есть макет, как показано ниже:

<ScrollView ...>

    <LinearLayout...>

            <EditText
                ..../>
  </LinearLayout>

</ScrollView>

Как только фрагмент загружается, мы устанавливаем фокус EditText так, чтобы он отображал Keyboard.

Мы также установили фон:

mParent = inflater.inflate(R.layout.sample_layout, container, false); mParent.setBackgroundResource(R.drawable.sample_bg);

Проблема заключается в том, что когда клавиатура отображается, фон изменяется или клавиатура перемещает фоновое изображение вверх.

mEdTxt.requestFocus();
        InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.showSoftInput(mEdTxt, InputMethodManager.SHOW_IMPLICIT);

mEdTxt.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if (hasFocus) {
                    getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
                }
            }
        });

Мы попробовали:

getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); 

Я видел много сообщений, связанных с этим, но это не помогло мне.

РЕДАКТИРОВАТЬ: Вопрос не дублирует

Как?

getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);

Приведенный выше код отключит скроллер.

Нам нужна клавиатура, которая должна быть показана, и скроллер, чтобы пользователь мог прокручивать страницу, когда клавиатура отображается.

Я надеюсь, что это ясно.

1 ответ

Похоже, у вас есть в узле деятельности в вашем манифесте:

android:windowSoftInputMode="adjustResize"

Если вы не хотите изменять его размер, удалите его или измените его на другое.

http://developer.android.com/guide/topics/manifest/activity-element.html

Другие вопросы по тегам