Как прокрутить экран вверх, когда отображается клавиатура?

Я хочу иметь возможность прокручивать экран входа в систему, когда отображается клавиатура. Я не использую ScrollView, у меня есть только RelativeLayout с ImageView и еще одним LinearLayout внутри него. Я пробовал добавить то, что ниже, в AndroidManifest, но не сработало.

android:windowSoftInputMode = "adjustResize"

Вы хотите прокручивать, когда отображается клавиатура, или просто хотите, чтобы раскладка прокручивалась вверх, когда появляется клавиатура? Попробуйте "adjustPan" для второго.

Ranjan 27.09.2018 14:58

Я хочу, чтобы мой макет был прокручиваемым, только когда отображается клавиатура, а в покое не прокручивается

taeC 27.09.2018 15:10

поместите все это в режим прокрутки и включите прокрутку только тогда, когда клавиатура активна / доступна, если вы не хотите, чтобы она была прокручиваемой в противном случае. Все это выполнимо, нужно погуглить.

user7023213 27.09.2018 15:46
0
3
67
2

Ответы 2

Поместите корневой макет (относительный макет в вашем случае) внутрь scrollview (скажем, он называется scrollview1), и когда появится клавиатура, запустите следующий код:

scrollview1.post(new Runnable() {
                @Override
                public void run() {
                    scrollview1.fullScroll(View.FOCUS_UP);

                }
            });

Обновлено: обратите внимание, что у scrollviews может быть только один дочерний элемент, поэтому убедитесь в этом.

Если я помещаю свой RelativeLayout в ScrollView, он делает макет длиннее и прокручиваемым, а я этого не хочу. Я хочу, чтобы макет можно было прокручивать только при отображении клавиатуры.

taeC 27.09.2018 15:11

В этом случае сохраните свой relative layout и используйте методы scrollTo() или scrollBy() для достижения желаемого.

Sotiris S. Magionas 27.09.2018 15:17

При добавлении активности в манифест добавить

<activity
            android:name = ".Activities.InputsActivity"
            ...
            android:windowSoftInputMode = "adjustPan"
            />

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