Я только что заметил следующее поведение на своем Nexus 9 с Android 7.1.1 и Android Support Library 25.3.1.
Вот мой макет деятельности:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:focusableInTouchMode="false"
android:orientation="vertical"
android:paddingBottom="4dp">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<View
android:layout_width="match_parent"
android:layout_height="300dp"
android:background="#fffaaa" />
<View
android:id="@+id/view"
android:layout_width="match_parent"
android:layout_height="300dp"
android:background="#bbbaaa" />
<View
android:layout_width="match_parent"
android:layout_height="10dp"
android:background="#f00" />
</LinearLayout>
</ScrollView>
Вот как это выглядит на экране:
Когда появляется экранная клавиатура, система меняет размеры моего макета активности, поэтому занимает пространство от верхней части экрана до клавиатуры. Пожалуйста, рассмотрите пунктирную красную линию на скриншоте ниже:
Однако, когда я заменяю ScrollView
на NestedScrollView
, система не изменяет размер макета:
Теперь пунктирная красная линия находится под клавиатурой. Проблема может быть легко устранена путем применения android:windowSoftInputMode="adjustResize"
к активности:
Теперь красная пунктирная линия находится выше клавиатуры. Мои вопросы:
- Почему я наблюдаю такое поведение?
- Что случилось с
NestedScrollView
?