[英]How to keep a bottom nav bar from being pushed up on keyboard shown
當軟鍵盤彈出時,如何創建一個不會隨視圖移動的粘性頁腳?
下面是我當前設置的圖像示例以及我想要實現的目標。 我有一個包含我的頁面內容的scrollview和一個與作為導航欄的父底部對齊的linearlayout。
問題是當鍵盤彈出時,它會推動我的整個視圖,包括底部導航部分。 我不想禁用自動推送視圖(通過設置android:windowSoftInputMode="adjustPan"
)而是排除單個元素被推高 ,我的底部導航欄。
我測試了windowSoftInputMode修復,但它隱藏了鍵盤后面的頁面內容。 有沒有辦法讓它繼續推高滾動視圖而不是底部導航? 我的另一個選擇是設置visibility:gone
在鍵盤上移動,然后在鍵盤上重新顯示它,但這看起來過於復雜,並且從我閱讀的內容來看並不總是可靠的。
如果有人有任何例子或建議,我會全力以赴。 謝謝。
將其添加為滾動條的XML屬性
機器人:isScrollContainer = “假”
或者在Manifest中的Activity的標簽中添加它
機器人:windowSoftInputMode = “adjustPan”
只需在onCreate
添加此行,當此選項設置窗口不會針對顯示的輸入方法進行調整。 :
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);
我在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而b)我不想移動的項目是一個簡單的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"
但我沒有像那樣完全測試它。 我很晚才回答,但我最近遇到了同樣的情況。 我采用另一種方法來解決這個問題,而不是使用RelativeLayout
或LinearLayout
,使用CoordinatorLayout
並將行為應用於BottomNavigtaionView
以顯示/隱藏它,滾動到頂部或底部(與我們看到CollapsingToolBar或AppBarLayout的方式相同)。
用於BottomNavigationView的內置行為是app:layout_behavior="@string/hide_bottom_view_on_scroll_behavior"
您可以從我的另一個答案中詳細閱讀所有步驟。
PS我發布它作為答案而不是評論,因為有時我們只是尋找答案而忽略評論,我相信它可能是解決這個問題的好方法,所以你不應該忽略它並給它一次讀。 謝謝。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.