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]