У меня есть 3 фрагмента в моем приложении. Макет 3-го фрагмента имеет следующий xml:
<TableRow
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:weightSum="1"
android:id="@+id/settings_btns_container"
android:visibility="invisible"
>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_horizontal|bottom"
android:layout_weight="0.5">
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Cancel"
android:id="@+id/cancel"/>
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_horizontal|bottom"
android:id="@+id/linearLayout"
android:layout_weight="0.5">
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Save"
android:id="@+id/save"/>
</LinearLayout>
</LinearLayout>
</TableRow>
Строка таблицы settings_btns_container установлена невидимой, поэтому она не отображается при начальной загрузке. При вызове onCreate все работает как положено. Однако, когда фрагмент выходит за пределы области действия (выбирается 1-й фрагмент), когда мы возвращаемся к 3-му фрагменту, становятся видимыми дочерние элементы этого контейнера tablerow. Я добавил следующий явный код в onCreate():
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
btn_container_ui = (TableRow) settings_view.findViewById(R.id.settings_btns_container);
/*
some other code
...
*/
btn_container_ui.setVisibility(View.INVISIBLE);
Устанавливаю ли я его в INVISIBLE или GONE, не имеет значения, дети все еще видны. Я проверил значение родительской таблицы, и оно установлено на 4, что является значением константы INVISIBLE. Установка для самих дочерних элементов значения INVISIBLE скрывает их без проблем, но я хотел скрыть родителя целиком, чтобы мне не приходилось просматривать дочерние элементы один за другим. Я что-то упустил здесь?