Как убедиться, что моя активность не увеличивается при появлении softkeyboard

#android #android-layout

#Android #android-макет

Вопрос:

Я использовал приложение hello world и добавил к нему поле редактирования текста, которое я хотел сохранить внизу. Вот мой activity_main.xml

 <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@ id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.sarang.hellotext.MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!" />

    <EditText
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:hint="Type Anything"
        android:layout_alignParentBottom="true"
        />
</RelativeLayout>
 

Активность выглядит нормально, когда программная клавиатура скрыта.
Однако он полностью увеличивается, когда видна программная клавиатура (даже строка заголовка).

Снимок с программной клавиатурой и без нее

Есть ли способ избежать этого? Я бы хотел, чтобы поле EditText перемещалось вверх, но строка заголовка и текстовое представление по-прежнему должны быть видны вверху.

Кроме того, когда я удалил android:layout_alignParentBottom=»true» для EditText, заголовок и текстовое представление сохраняют свое место независимо от клавиатуры. Я не могу понять, почему?

Комментарии:

1. Опубликуйте свой полный XML

Ответ №1:

Попробуйте добавить в свой манифестный файл под тегом activity

 android:windowSoftInputMode="adjustPan" 
 

и если это не сработает, то

 android:windowSoftInputMode="adjustResize" 
 

Комментарии:

1. Я уже пробовал оба варианта, к сожалению, поведение остается прежним.

Ответ №2:

Я думаю, что добавление android:windowSoftInputMode="adjustResize" к вашей активности вполне может это сделать. То есть в AndroidManifest.XML-файл, поместите указанную выше строку внутри <activity> вашего приложения. Я не уверен, почему в вашем вопросе сейчас указано -1 (но я здесь новичок.) Конечно, вопрос не дает больших идей, но, по крайней мере, ясно, о чем вы спрашиваете, и каждый должен с чего-то начинать. В вашем случае (ну, на самом деле все) читают документацию. Конкретно для вас прочитайте «Обработка видимости метода ввода«, в частности, бит «Укажите, как должен реагировать ваш пользовательский интерфейс».

(Ах, я вижу, кто-то дал подобный совет, пока я печатал… Извините за повторение,)

Комментарии:

1. Спасибо за подробный ответ. Однако я уже потратил много времени на настройку / изменение размера и не смог заставить его работать. Подозреваю что-то в макете.

2. Хм, извините за это, кажется, я помню, что это помогает… Попробуйте обернуть это в scrollView возможно? Честно говоря, я не слишком разбираюсь в использовании макетов (ну, это меня раздражает), К сожалению, мощный подразумевает сложный.