При использовании просмотра иерархии, чтобы уменьшить иерархию, я заметил, что при каждом добавлении фрагмента (как в статическом "или" динамический "способ) фрагменты всегда завернуты в новый FrameLayout.
Вот пример:
Это мой макет :
<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"
android:contentDescription="mainActivityRoot" >
<TextView
android:id="@+id/hello_world"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
<fragment
android:name="com.example.testfragments.MainFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/hello_world" />
</RelativeLayout>
И это расположение фрагмента:
<ProgressBar android:id="@+id/ProgressBar1" xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:contentDescription="mainFragmentRoot"
android:layout_height="match_parent" />
Исходный код активности пуст, кроме setContentView
,
И исходный код фрагмента содержит только
@Override
public View onCreateView(...) {
return inflater.inflate(R.layout.fragment_main, container, false);
}
Теперь,
Я бы ожидал увидеть PrograssBar
непосредственно в иерархии корня активности, но вместо этого есть еще один FrameLayout, о котором я понятия не имею, откуда он.
Здесь снят снимок, нарисовал дополнительный кадр в ЖЕЛТЫХ:
Итак, мои вопросы - откуда они взялись? и могу ли я избавиться от него? В моем реальном приложении эти дополнительные FrameLayouts создают очень глубокие иерархии, которые, вероятно, являются плохими для производительности.
Спасибо!