Ответ 1
Либо добавьте это как атрибут XML прокрутки
Android: isScrollContainer = "ложь"
или добавить это в тег активности в манифесте
Android: windowSoftInputMode = "adjustPan"
Как я могу создать липкий нижний колонтитул, который не будет перемещен вверх, когда появится клавиатура функциональной клавиши?
Ниже приведен пример изображения моей текущей настройки и того, чего я хочу достичь. У меня есть scrollview, который содержит мое содержимое страницы и linearlayout, которые выровнены с нижней частью родителя, которая действует как панель навигации.
Проблема заключается в том, что при всплывании клавиатуры она выводит весь мой вид вверх, включая нижний раздел навигации. Я не хочу отключать автоматическое подталкивание представления (путем установки android:windowSoftInputMode="adjustPan"
), но вместо исключить один элемент из-под него вверх, моя нижняя панель навигации.
Я протестировал исправление windowSoftInputMode, но он скрывает содержимое моей страницы за клавиатурой. Есть ли способ, чтобы он продолжал выдвигать scrollview, но не нижний nav? Моим другим вариантом было установить visibility:gone
на клавиатуре вверх, а затем перетащить его на клавиатуру вниз, но это кажется слишком сложным и не всегда надежным из того, что я читал.
Если у кого-нибудь есть примеры или предложения, я все уши. Спасибо.
Либо добавьте это как атрибут XML прокрутки
Android: isScrollContainer = "ложь"
или добавить это в тег активности в манифесте
Android: windowSoftInputMode = "adjustPan"
Я пробовал много решений, найденных на SO, и добавлял android: windowSoftInputMode = "adjustNothing" в манифест для работы, которая работала для меня:
<activity
android:name=".MainActivity"
android:windowSoftInputMode="adjustNothing">
Связанная компоновка:
<RelativeLayout
...
<android.support.v4.widget.NestedScrollView
...
</android.support.v4.widget.NestedScrollView>
<android.support.design.widget.BottomNavigationView
...
design:menu="@menu/navigation"/>
</RelativeLayout>
Я столкнулся с довольно подобной проблемой с различиями в том, что a) я сначала не использовал ScrollView, и б) элемент, который я не хотел переместить, был простым TextView.
Вот ответ, который я нашел: нажмите
Что я сделал, чтобы исправить это:
adjustResize
android:layout_alignParentBottom="true"
, в то время как это переместит вашу навигационную панель в нижнюю часть экрана, это также означает, что клавиатура может переместить ее из-за "adjustResize",android:layout_height="wrap_content"
в сочетании с android:layout_below="@id/MyScrollView"
(так что макет будет использовать все пространство, которое он может получить между ScrollView и нижней частью экрана) и android:gravity="bottom"
чтобы просто иметь все в нижней части макета.android:layout_height="match_parent"
вместо android:layout_alignParentBottom="true"
и android:layout_height="wrap_content"
но я не полностью его тестировал. Просто добавьте эту строку в свой onCreate
, когда эта опция устанавливает, что окно не настраивается для показанного метода ввода. :
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);
вы просто добавляете этот код в свой манифест таким образом.
<activity android:name=".MainActivity"
android:windowSoftInputMode="adjustPan">
это работает для меня.. счастливое кодирование