Ответ 1
Я исправил проблему, определив следующий атрибут в <activity>
файла AndroidManifest.xml.
android:windowSoftInputMode="stateVisible|adjustResize"
У меня есть макет <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-е поле ввода и кнопку "ОК" , которые скрыты с помощью мягкой клавиатуры, , но страница не прокручивается. Зачем? Как избавиться от него? , в основном, я хотел бы видеть все поля ввода и кнопку "ОК" даже при появлении мягкой клавиатуры.
Я исправил проблему, определив следующий атрибут в <activity>
файла AndroidManifest.xml.
android:windowSoftInputMode="stateVisible|adjustResize"
Хорошо, я искал несколько часов, чтобы найти проблему, и я нашел ее.
Ни одно из изменений, таких как 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: Здесь - еще одна хорошая тема, которая поможет вам пойти в правильном направлении или даже решить вашу проблему.
Для меня единственное, что работает, заключается в том, что в манифесте проявляется этот атрибут:
android:windowSoftInputMode="stateHidden|adjustPan"
Чтобы не показывать клавиатуру при открытии операции и не перекрывать нижнюю часть представления.
поместите это внутри вашего манифеста, как это, в полноэкранном режиме
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>
в свойстве Manifest
define windowSoftInputMode
<activity android:name=".MyActivity" android:windowSoftInputMode="adjustNothing">
Добавьте ниже строку кода в файл манифеста Android под тегом активности
android:windowSoftInputMode="adjustResize"
проверьте это.
<activity android:name=".Calculator" android:windowSoftInputMode="stateHidden|adjustResize" android:theme="@android:style/Theme.Black.NoTitleBar"></activity>
Это работало только для меня:
android:windowSoftInputMode="adjustPan"
Вы можете попробовать использовать следующий код для решения вашей проблемы:
<activity
android:name=".DonateNow"
android:label="@string/title_activity_donate_now"
android:screenOrientation="portrait"
android:theme="@style/AppTheme"
android:windowSoftInputMode="stateVisible|adjustPan">
</activity>
Кроме того, если вы хотите сделать это программно, просто добавьте приведенную ниже строку в onCreate упражнения.
getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE |
WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE );
Ну, самый простой ответ, который я попытался, это просто удалить ваш код, который заставляет действие перейти на весь экран. У меня был такой код, который отвечал за то, чтобы моя деятельность стала полноэкранным:
if (Build.VERSION.SDK_INT> = Build.VERSION_CODES.KITKAT) {
getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
}
Я только что удалил свой код, и он работает совершенно нормально, хотя, если вы хотите добиться этого при включенном полноэкранном режиме, вам придется попробовать другие методы
Его работа:
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>