У меня простой пользовательский интерфейс: 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>
Основной класс Activity должен отображать только макет. Когда я запускаю программу и нажимаю EditText, появляется виртуальная клавиатура, но поле EditText пропало.
Возможно, RelativeLayout вызывает проблемы, но я не знаю, как воспроизвести тот же макет с другим классом Layout.
Любые предложения приветствуются, я очень ценю вашу помощь.
Спасибо.
Edit:
Вот два снимка экрана: один показывает EditText внизу без виртуальной клавиатуры, другой с виртуальной клавиатурой, но без EditText. Интересно отметить, что SurfaceView и EditText фактически сдвигаются вверх, EditText просто исчезает. Кстати, это также происходит с кнопкой, если она находится рядом с EditText.
EditText под SurfaceView (слева); EditText пропал (справа)