it-swarm.com.ru

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

У меня есть макет <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>

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

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

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

78
Leem.fin

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

Android:windowSoftInputMode="stateVisible|adjustResize"
102
Leem.fin

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

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

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

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

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

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

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

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

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

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

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

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

34
qweret

Для меня единственное, что работает, - это поместить в действие в манифесте этот атрибут:

Android:windowSoftInputMode="stateHidden|adjustPan"

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

13
Jachumbelechao Unto Mantekilla

в вашем Manifest определите свойство windowSoftInputMode<activity Android:name=".MyActivity" Android:windowSoftInputMode="adjustNothing">

10
Mohammad Ersan

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

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>
9
user3594530

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

Android:windowSoftInputMode="adjustResize"
6
Bilal Ahmad

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

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

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

Android:windowSoftInputMode="adjustPan"
2
blueware

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

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