Адаптация компонента при появлении виртуальной клавиатуры
Я проектирую простое действие входа в систему. Я использовал следующий формат XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="vertical"
android:layout_gravity="center_vertical|center_horizontal"
android:gravity="center_vertical|center_horizontal"
android:layout_margin="15dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="My application title"
android:textSize="30sp"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="2"
android:orientation="vertical"
android:layout_gravity="center_vertical|center_horizontal"
android:gravity="center_vertical"
android:layout_margin="15dp">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Username"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Password"
android:layout_marginTop="15dp"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:text="Login"/>
</LinearLayout>
</LinearLayout>
И я получил этот результат:
Но если фокус на первом EditText, я получаю это:
и если фокус находится на втором EdiText, результатом будет следующее:
Учитывая, что я использовал следующую строку в манифесте, для моей деятельности:
android:windowSoftInputMode="adjustPan|adjustResize"
Я хочу, чтобы при появлении виртуальной клавиатуры два текста редактирования, кнопка и текстовое представление были видны и правильно центрировались на доступном экране. Что я должен изменить в своем коде?
ПРИМЕЧАНИЕ: у меня тот же результат, если я удалю строку в манифесте:
android:windowSoftInputMode="adjustPan|adjustResize"
1 ответ
Вы можете заменить родительский LinearLayout на ScrollView:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout ...>
....
....
</LinearLayout>
</ScrollView>
попробуйте это, это работает для некоторых из моих apk!
Редактировать: извините, не вижу автоматического центрирования текста, поэтому вы можете вручную отредактировать ваш editext по центру, проведя пальцем. Надеюсь, это поможет