現状,AndroidStudioでツールバー付きのスクロールビューとその下にフッターを付けたアクティビティを作っています。
スクロールビューはツールバーを持っており、そのツールバーは「app:layout_scrollFlags="scroll|enterAlways"」で
下にスクロールすると表示されなくなるようにしています。
スクロールする内容の中身は<include layout="@layout/content" />で別のxmlファイルを持ってきています。
https://techblog.yahoo.co.jp/android/androidcoordinatorlayout/
を参考にスクロールビューの中身は下記のような構造で作成しています。
xml
1<CoordinatorLayout> 2 <AppBarLayout> 3 <CollapsingToolbarLayout> 4 <Toolbar /> 5 </CollapsingToolbarLayout> 6 </AppBarLayout> 7 <include layout="@layout/content_scrolling" /> 8</CoordinatorLayout>
このレイアウトの下に常に表示されるフッターを付けようとしているのですが、現状フッターが一番下に固定されており、
キーボードが出ると隠れてしまいます。
キーボードが出るとフッターがキーボードと一緒に押し上げられて常に表示される挙動を望んでいるのですが、何が悪いのかわかりません。
アドバイスを頂けませんでしょうか。
現状のアプリの構成は
xml
1<RelativeLayout> 2 3 <CoordinatorLayout> 4 <AppBarLayout> 5 <CollapsingToolbarLayout> 6 <Toolbar /> 7 </CollapsingToolbarLayout> 8 </AppBarLayout> 9 <include layout="@layout/content_scrolling" /> 10 </CoordinatorLayout> 11 12 <fragment></fragment> 13 14</RelativeLayout>
としています。詳細なコードは下記のとおりです。
xml
1<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:app="http://schemas.android.com/apk/res-auto" 3 xmlns:tools="http://schemas.android.com/tools" 4 android:layout_width="match_parent" 5 android:layout_height="match_parent" 6 android:orientation="vertical"> 7 8 9 10 11 <androidx.coordinatorlayout.widget.CoordinatorLayout 12 android:layout_width="fill_parent" 13 android:layout_height="fill_parent" 14 android:layout_above="@+id/SM_bottomFrag" 15 android:layout_marginBottom="0dp" 16 android:fitsSystemWindows="true" 17 tools:context=".Activity"> 18 19 20 <com.google.android.material.appbar.AppBarLayout 21 android:id="@+id/app_bar" 22 android:layout_width="match_parent" 23 android:layout_height="100dp" 24 android:fitsSystemWindows="true" 25 android:theme="@style/AppTheme.AppBarOverlay"> 26 <com.google.android.material.appbar.CollapsingToolbarLayout 27 android:id="@+id/toolbar_layout" 28 android:layout_width="match_parent" 29 android:layout_height="match_parent" 30 android:fitsSystemWindows="true" 31 app:contentScrim="?attr/colorPrimary" 32 app:layout_scrollFlags="scroll|enterAlways" 33 app:toolbarId="@+id/toolbar"> 34 <androidx.appcompat.widget.Toolbar 35 android:id="@+id/toolbar" 36 android:layout_width="match_parent" 37 android:layout_height="?attr/actionBarSize" 38 app:layout_collapseMode="pin" 39 app:title="タイトル画面" 40 app:popupTheme="@style/AppTheme.PopupOverlay" /> 41 </com.google.android.material.appbar.CollapsingToolbarLayout> 42 </com.google.android.material.appbar.AppBarLayout> 43 44 <include layout="@layout/content" /> 45 46 </androidx.coordinatorlayout.widget.CoordinatorLayout> 47 48 49 50 51 52 <fragment」 53 android:id="@+id/SM_bottomFrag" 54 android:name="com.example.myapplication.BottomFragment" 55 android:layout_width="match_parent" 56 android:layout_height="wrap_content" 57 android:layout_alignParentBottom="true" 58 tools:layout="@layout/fragment_bottom" /> 59 60 61</RelativeLayout>
追記//////////////////////////////////////////////////////////////////////////////////
教えていただいたフッター固定法をもとに以下のように変えると、うまくいきます。
AndroidManifest
1<activity android:windowSoftInputMode="adjustResize">
xml
1<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 android:layout_width="match_parent" 3 android:layout_height="match_parent" 4 xmlns:tools="http://schemas.android.com/tools"> 5 6 <ScrollView 7 android:layout_width="match_parent" 8 android:layout_height="match_parent" 9 android:layout_above="@+id/SM_bottomFrag"> 10 11 <include layout="@layout/content" /> 12 13 </ScrollView> 14 <fragment 15 android:id="@+id/SM_bottomFrag" 16 android:name="com.example.myapplication.BottomFragment" 17 android:layout_width="match_parent" 18 android:layout_height="wrap_content" 19 android:layout_alignParentBottom="true" 20 tools:layout="@layout/fragment_bottom" 21 android:layout_weight="1.0"/> 22</RelativeLayout>
ですが、この<ScrollView>で囲まれた部分が
xml
1<androidx.coordinatorlayout.widget.CoordinatorLayout 2 android:layout_width="fill_parent" 3 android:layout_height="fill_parent" 4 android:layout_above="@+id/SM_bottomFrag" 5 android:layout_marginBottom="0dp" 6 android:fitsSystemWindows="true" 7 tools:context=".Activity"> 8 <com.google.android.material.appbar.AppBarLayout 9 android:id="@+id/app_bar" 10 android:layout_width="match_parent" 11 android:layout_height="100dp" 12 android:fitsSystemWindows="true" 13 android:theme="@style/AppTheme.AppBarOverlay"> 14 <com.google.android.material.appbar.CollapsingToolbarLayout 15 android:id="@+id/toolbar_layout" 16 android:layout_width="match_parent" 17 android:layout_height="match_parent" 18 android:fitsSystemWindows="true" 19 app:contentScrim="?attr/colorPrimary" 20 app:layout_scrollFlags="scroll|enterAlways" 21 app:toolbarId="@+id/toolbar"> 22 <androidx.appcompat.widget.Toolbar 23 android:id="@+id/toolbar" 24 android:layout_width="match_parent" 25 android:layout_height="?attr/actionBarSize" 26 app:layout_collapseMode="pin" 27 app:title="タイトル画面" 28 app:popupTheme="@style/AppTheme.PopupOverlay" /> 29 </com.google.android.material.appbar.CollapsingToolbarLayout> 30 </com.google.android.material.appbar.AppBarLayout> 31 32 <include layout="@layout/content" /> 33 34 </androidx.coordinatorlayout.widget.CoordinatorLayout>
だとやはりフッターは下に固定されてしまいます。固定の原因はCoordinatorLayoutの中身に原因があると思われます。
(置き換える際にはAndroidManifestに android:theme="@style/AppTheme.NoActionBar" を足しています)
ツールバーをapp:layout_scrollFlags="scroll|enterAlways"の挙動で動かすのは外したくないです。
なので、主な解決策としては
1.CoordinatorLayoutの中身でフッターを固定している設定を特定し、外す
2.CoordinatorLayoutを使わず、別のレイアウトを使ってツールバーをの
app:layout_scrollFlags="scroll|enterAlways"の挙動を実現する
のほうが良いのかなと思っています。このどちらかのやり方についてお教え願えませんでしょうか。
回答1件
あなたの回答
tips
プレビュー