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

android api:父视图设置为不可见时,子视图仍然可见,android,xml,view,children,invisible,Android,Xml,View,Children,Invisible,我的应用程序中有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="invis

我的应用程序中有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>

不管我把它设置为隐形还是消失都无关紧要,孩子们仍然是可见的。我检查了父tablerow的值,它被设置为4,这是不可见常量的值。将子对象本身设置为“不可见”会毫无问题地隐藏它们,但我想隐藏整个父对象,因此我不必逐个检查子对象。我在这里遗漏了什么吗?

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

我不认为使父对象不可见意味着子对象也将不可见,我想你必须一个接一个地设置每个孩子不可见为什么需要为每个孩子视图一个接一个地设置@TomTsagk
@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);