У меня есть 3 фрагмента в моем приложении. Компоновка 3-го фрагмента имеет следующий XML:android api: дочерний вид по-прежнему отображается с родительским представлением, установленным на INVISIBLE
<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 TableRow устанавливается невидимым поэтому не отображается на начальной загрузке. Когда вызывается onCreate, все работает так, как ожидалось. Однако, когда фрагмент выходит за рамки (выбран 1-й фрагмент), когда мы возвращаемся к третьему фрагменту, дети этого контейнера 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 не имеет значения, дети до сих пор видны. Я проверил значение родительского tablerow, и он установлен в 4, что является значением константы INVISIBLE. Установка самих детей на НЕВИДИМОЕ скрывает их без проблем, но я хотел скрыть весь родитель, поэтому мне не нужно проходить через детей один за другим. Я что-то упустил?
Я не думаю, что создание родительского невидимого означает, что дети тоже станут невидимыми, я думаю, что вы должны установить каждого ребенка невидимым по одному – TomTsagk
, почему нужно устанавливать для каждого дочернего вида один за другим @TomTsagk – Man