android api:子视图仍然可见,父视图设置为INVISIBLE

时间:2014-09-09 16:19:09

标签: android xml view children invisible

我的应用中有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隐藏它们没有问题,但我想隐藏整个父母,所以我不必一个接一个地通过孩子。我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:0)

我不确定这是否有帮助,但如果视图及其所有祖先都可见,则View类的isShown()方法返回true。