При использовании hierarchy viewer, чтобы уменьшить иерархию, я заметил, что при каждом добавлении фрагмента (как в «статическом», так и «динамическом») фрагменты всегда завернуты в новый FrameLayout.Почему дополнительный 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 создают очень глубокие иерархии, которые, вероятно, плохи для производительности.
Спасибо!
вы сэр - Rock! большое спасибо за исчерпывающий ответ. – Sean
Я открыл для этого проблему: https://code.google.com/p/android/issues/detail?id=68057&thanks=68057&ts=1396459349 – Sean