ソフトキーキーボードがポップアップしたときにビューとともに移動しないスティッキーフッターを作成するにはどうすればよいですか?
以下は、現在のセットアップのイメージ例と、達成したいことです。ページコンテンツを含むscrollviewと、ナビゲーションバーとして機能する親の下部に配置されるlinearlayoutがあります。
問題は、キーボードがポップアップすると、下部のナビゲーションセクションを含むビュー全体が押し上げられることです。 無効にしたくないビューの自動プッシュアップ(Android:windowSoftInputMode="adjustPan"
の設定による)ではなく、単一の要素をプッシュから除外するup、私の下部のナビゲーションバー。
私はwindowSoftInputModeの修正をテストしましたが、ページのコンテンツをキーボードの後ろに隠しています。それがスクロールビューを押し上げ続けるが底部のナビゲーションは押し続ける方法はありますか?私の他のオプションは、キーボードを上にvisibility:gone
を設定してから、キーボードを下にして再表示することでしたが、それは過度に複雑に見え、私が読んだものから常に信頼できるとは限りません。
誰かが例や提案があれば、私はすべて耳です。ありがとう。
これをスクロールバーのXML属性として追加するか、
Android:isScrollContainer = "false"
またはマニフェストのアクティビティのタグにこれを追加します
Android: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>
私は答えるのがとても遅いですが、最近同じ状況に遭遇しました。私はこの問題を解決するために別のアプローチに従いましたが、それはRelativeLayout
またはLinearLayout
を使用するのではなく、CoordinatorLayout
を使用し、BottomNavigtaionView
に動作を適用して表示/非表示にしました上部または下部にスクロールして(CollapsingToolBarまたはAppBarLayoutと同じように)。
BottomNavigationViewに使用される組み込みの動作はapp:layout_behavior="@string/hide_bottom_view_on_scroll_behavior"
すべての手順の詳細については、私の 別の回答 を参照してください。
追伸コメントではなく回答として投稿しました。時々、回答を探してコメントを無視することがあり、この問題を解決するための良いアプローチになると信じているので、無視して一度読んではいけません。ありがとう。
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"
を使用することもできますが、私はそのように完全にテストしていません。