我的应用中有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 tablerow设置为不可见,因此它不会在初始加载时显示。调用onCreate时,一切都按预期工作。但是,当片段超出范围(选择第一个片段)时,当我们返回第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隐藏它们没有问题,但我想隐藏整个父母,所以我不必一个接一个地通过孩子。我在这里错过了什么吗?
答案 0 :(得分:0)
我不确定这是否有帮助,但如果视图及其所有祖先都可见,则View类的isShown()方法返回true。