В моето приложение искам да запазя един и същ рекламен банер в долната част на всички екрани, така че използвам една дейност с множество фрагменти.
Във файла за оформление на активността (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 казаха, че трябва да използвате единични дейности с множество фрагменти, след което можете да добавяте/премахвате вашите фрагменти динамично без презареждане нов банер, но не е намерен код за този подход, така че го пробвам сам. ако имате по-добри решения, моля, помогнете ми.