Прокрутка страницы при появлении мягкой клавиатуры

У меня есть макет <ScrollView>:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/my_scrollview"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <EditText
            android:id="@+id/input_one"
            android:layout_width="300dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:inputType="number" >

         <EditText
            android:id="@+id/input_two"
            android:layout_width="300dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:inputType="number" >

         <EditText
            android:id="@+id/input_three"
            android:layout_width="300dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:inputType="number" >

          <Button
            android:id="@+id/ok_btn"
            android:layout_width="200dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginTop="20dp"
            android:text="@string/ok_str" />

      </LinearLayout>
</ScrollView>

Как вы видите выше, простой макет состоит из трех полей ввода и кнопки "Ok".

Я запускаю свое приложение с вышеуказанной компоновкой, когда я нажимаю на 1-ое поле ввода (@+id/input_one), мягкая клавиатура появится из нижней части экрана, она скрывает третью поле ввода и кнопку "ОК" .

Так как я использую <ScrollView>, я думал, что могу прокрутить страницу вверх, чтобы увидеть 3-е поле ввода и кнопку "ОК" , которые скрыты с помощью мягкой клавиатуры, , но страница не прокручивается. Зачем? Как избавиться от него? , в основном, я хотел бы видеть все поля ввода и кнопку "ОК" даже при появлении мягкой клавиатуры.

Ответ 1

Я исправил проблему, определив следующий атрибут в <activity> файла AndroidManifest.xml.

android:windowSoftInputMode="stateVisible|adjustResize"

Ответ 2

Хорошо, я искал несколько часов, чтобы найти проблему, и я нашел ее.

Ни одно из изменений, таких как fillViewport="true" или android:windowSoftInputMode="adjustResize", не помогло мне.

Я использую Android 4.4, и это большая ошибка:

android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"

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

На данный момент я использовал это вместо:

android:theme="@android:style/Theme.Black.NoTitleBar

Я не знаю, как избавиться от верхней панели системы со временем и отображением батареи, но по крайней мере у меня возникла проблема.

Надеюсь, это поможет другим, у кого такая же проблема.

РЕДАКТИРОВАТЬ: У меня есть небольшое обходное решение для моего дела, поэтому я разместил его здесь:

Я не уверен, что это сработает для вас, но это определенно поможет вам понять и прояснить некоторые вещи.

EDIT2: Здесь - еще одна хорошая тема, которая поможет вам пойти в правильном направлении или даже решить вашу проблему.

Ответ 3

Для меня единственное, что работает, заключается в том, что в манифесте проявляется этот атрибут:

android:windowSoftInputMode="stateHidden|adjustPan"

Чтобы не показывать клавиатуру при открытии операции и не перекрывать нижнюю часть представления.

Ответ 4

поместите это внутри вашего манифеста, как это, в полноэкранном режиме

android:windowSoftInputMode="stateVisible|adjustPan" 

в вашем манифесте

<activity
    android:windowSoftInputMode="stateVisible|adjustPan"
    android:name="com.example.patronusgps.MainActivity"
    android:label="@string/app_name" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

Ответ 5

в свойстве Manifest define windowSoftInputMode <activity android:name=".MyActivity" android:windowSoftInputMode="adjustNothing">

Ответ 6

Добавьте ниже строку кода в файл манифеста Android под тегом активности

android:windowSoftInputMode="adjustResize"

Ответ 7

проверьте это.

<activity android:name=".Calculator" android:windowSoftInputMode="stateHidden|adjustResize" android:theme="@android:style/Theme.Black.NoTitleBar"></activity>

Ответ 8

Это работало только для меня:

android:windowSoftInputMode="adjustPan"

Ответ 9

Вы можете попробовать использовать следующий код для решения вашей проблемы:

 <activity
     android:name=".DonateNow"
     android:label="@string/title_activity_donate_now"
     android:screenOrientation="portrait"
     android:theme="@style/AppTheme"
     android:windowSoftInputMode="stateVisible|adjustPan">
 </activity>

Ответ 10

Кроме того, если вы хотите сделать это программно, просто добавьте приведенную ниже строку в onCreate упражнения.

getWindow().setSoftInputMode(
            WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE | 
            WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE );

Ответ 11

Ну, самый простой ответ, который я попытался, это просто удалить ваш код, который заставляет действие перейти на весь экран. У меня был такой код, который отвечал за то, чтобы моя деятельность стала полноэкранным:

if (Build.VERSION.SDK_INT> = Build.VERSION_CODES.KITKAT) {

        getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
                WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
    }

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

Ответ 12

Его работа:

android:windowSoftInputMode="stateVisible|adjustPan" 

 <activity
     android:name=".DonateNow"
     android:label="@string/title_activity_donate_now"
     android:screenOrientation="portrait"
     android:theme="@style/AppTheme"
     android:windowSoftInputMode="stateVisible|adjustPan">
 </activity>