Android EditText скрыт, когда виртуальная клавиатура отображается, а SurfaceView задействован
У меня есть простой пользовательский интерфейс: EditText должен располагаться ниже SurfaceView.
Я использую RelativeLayout для упорядочения этих двух представлений.
Теперь, когда я нажимаю на EditText, чтобы открыть виртуальную клавиатуру, SurfaceView соскальзывает, но EditText скрыт и не отображает типизированную строку.
Для воспроизведения используйте следующий макет XML-кода:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/RelativeLayout01"
android:layout_height="fill_parent"
android:layout_width="fill_parent">
<SurfaceView
android:id="@+id/SurfaceView01"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</SurfaceView>
<EditText
android:id="@+id/EditText01"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentBottom="true"
android:selectAllOnFocus="true"
android:textStyle="normal"
android:singleLine="true">
</EditText>
</RelativeLayout>
Основной класс активности должен показывать только макет. Когда я запускаю программу и нажимаю EditText, появляется виртуальная клавиатура, но поле EditText отсутствует.
Возможно, RelativeLayout вызывает проблемы, но я не знаю, как воспроизвести один и тот же макет с другим классом Layout.
Любые предложения приветствуются, я очень ценю вашу помощь.
Спасибо.
Edit:
Вот два скриншота: один показывает EditText внизу без виртуальной клавиатуры, один с виртуальной клавиатурой, но без EditText. Интересно отметить, что SurfaceView и EditText действительно сдвигаются вверх, EditText просто исчезает. Кстати, это также происходит с кнопкой, если она находится рядом с EditText.
EditText ниже SurfaceView (слева); EditText отсутствует (справа)
Ответы
Ответ 1
Как отметил комментатор в теме об этой ошибке, очень легко исправить эту проблему, установив цвет фона SurfaceView
или GLSurfaceView
к прозрачному с помощью mSurfaceView.setBackgroundColor(Color.TRANSPARENT);
.
Эта проблема возникла для меня при нажатии EditText
на Honeycomb (v13) на вкладке Galaxy Tab 10.1. Проблема заключалась в том, что после изменения размера GLSurfaceView
на его месте был еще черный прямоугольник, который покрывал EditText
. Это решение работает, делая прозрачный прямоугольник прозрачным, поэтому можно видеть EditText
.
Ответ 2
Добавьте следующий код для своей деятельности в свой AndroidManifest.xml
android:windowSoftInputMode="adjustPan"
Ответ 3
Да, правильно!
Добавьте код для своей деятельности в свой AndroidManifest.xml android:windowSoftInputMode="adjustPan"
И в тексте редактирования просто добавьте:
android:imeOptions="flagNoFullscreen"
Ответ 4
я обнаружил, что у него разные результаты на разных устройствах, затем я использую ScrollView в качестве корневого представления и помещаю макет в ScrollView, когда режим fullScreen работает нормально. и обязательно установите андроид: fillViewport = "true", если у вас все еще есть какая-то проблема, дайте мне знать [email protected]