В моем приложении я хочу сохранить один и тот же рекламный баннер внизу всех экранов, поэтому я использую одно действие с несколькими фрагментами.
В файле макета Activity (activity_mail.xml) у меня есть FrameLayout в качестве контейнера фрагментов и AdView внизу, чтобы показывать баннерную рекламу из Admob.
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
tools:ignore="MergeRootFrame">
<FrameLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<fragment
android:id="@+id/adFragment"
android:name="com.jiyuzhai.wangxizhishufazidian.MainActivity$AdFragment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true" />
</RelativeLayout>
Макет фрагмента для замены существующего фрагмента
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:background="@drawable/theme_color"
android:layout_alignParentTop="true"
android:text="Topbar in fragment"
android:textColor="@android:color/white"
android:textSize="30sp"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:background="@drawable/theme_color"
android:layout_alignParentBottom="true"
android:text="Bottombar in fragment"
android:textColor="@android:color/white"
android:textSize="30sp"/>
</RelativeLayout>
Код для замены существующего фрагмента
fragment = new LinmoFragment();
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.setCustomAnimations(R.anim.fade_in, R.anim.fade_out, R.anim.fade_in, R.anim.fade_out);
fragmentTransaction.replace(R.id.container, fragment);
fragmentTransaction.commit();
Но когда я заменяю фрагменты в контейнере, нижняя часть фрагмента скрывается AdView, другими словами, фрагмент находится за пределами Framelayout, я хочу, чтобы фрагмент полностью находился внутри контейнера. это возможно?
Вот что я хочу
и это то, что я получаю (Рекламный баннер скрывает нижнюю панель фрагмента)
Есть идеи?
Кстати, я считаю, что нет способа сохранить один и тот же баннер для всех экранов с несколькими действиями в Android, многие люди на SO сказали, что вам нужно использовать одиночные действия с несколькими фрагментами, тогда вы можете динамически добавлять/удалять свои фрагменты без перезагрузки новый баннер, но для этого подхода не найден код, поэтому я пробую сам. если у вас есть лучшие решения, пожалуйста, помогите мне.