为什么看不见的LinearLayout会占用空间?

时间:2011-04-22 14:37:59

标签: android android-layout

我有以下LinearLayout ......

<LinearLayout android:id="@+id/linearLayout3" android:visibility="invisible" android:layout_width="wrap_content" android:layout_height="wrap_content">
<TextView android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/S"></TextView>
<TextView android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/b"></TextView>
<TextView android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/Ar"></TextView>
</LinearLayout>

我将其设置为不可见,但LinearLayout仍然占用空间,导致布局中两个其他线性布局之间的填充,为什么?如何让它占用空间?

4 个答案:

答案 0 :(得分:39)

如果您希望视图不占用空间,则必须将可见性设置为gone

答案 1 :(得分:13)

Invisible的文档说:

  

此视图不可见,但仍然存在   占用空间用于布局目的。

因此,将布局的可见性设置为不可见只是隐藏布局,但不会释放消耗的空间。如果你想这样做,你必须设置可见性。

Gone做你想做的事:

  

此视图是不可见的,但它不是   占用任何空间用于布局目的。

另见:http://developer.android.com/reference/android/view/View.html#setVisibility(int

答案 2 :(得分:10)

invisible更改为gone,这样可以解决问题。

  

public static final int View.INVISIBLE

     

此视图不可见,但仍然存在   占用空间用于布局目的。   与setVisibility(int)一起使用。

请参阅View.GONEView.INVISIBLE

答案 3 :(得分:6)

invisible将占用与visible相同的空间。如果您希望它不占用空间,请将可见性设置为gone