Я полагаю, что вы можете использовать RelativeLayout для разработки своего пользовательского интерфейса, RelativeLayout - это макеты, которые охватывают все доступное пространство и затем изменяются в размерах при появлении клавиатуры. LinearLayout - это макеты, размер которых не изменяется в процессе изменения размера.
Это мой простой пример изменения размера макета при появлении программной клавиатуры.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/label"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Type here:"/>
<EditText
android:id="@+id/entry"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/label"/>
<Button
android:id="@+id/ok"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/entry"
android:layout_alignParentRight="true"
android:layout_marginLeft="10dip"
android:text="OK" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@id/ok"
android:layout_alignTop="@id/ok"
android:text="Cancel" />
android:layout_alignParentBottom="true"/>
Пожалуйста, не забудьте добавить WindowSoftInputMode = Android .Views.SoftInput.AdjustResize следующим образом:
[Activity(Label = "@string/app_name", Theme = "@style/AppTheme", MainLauncher = true, WindowSoftInputMode =Android.Views.SoftInput.AdjustResize)]
Если в RelativeLayout много элементов управления, вам нужно использовать ScrollView для содержит RelativeLayout.