Подтвердить что ты не робот

Почему невидимый LinearLayout занимает пространство?

У меня есть следующий 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 по-прежнему занимает пробел, заставляя заполнять между двумя другими линеаритами в макете, почему? Как мне сделать это не занимать места?

4b9b3361

Ответ 1

Поскольку вы должны установить видимость на gone, если хотите, чтобы представление не занимало места.

Ответ 2

В документации Invisible говорится:

Это представление невидимо, но оно все еще занимает место для целей макета.

Поэтому настройка видимости макета на невидимую просто скрывает макет, но не освобождает потребляемое пространство. Если вы хотите сделать это, вам необходимо установить видимость.

Gone делает то, что вы хотите:

Это представление невидимо, и оно не возьмите любое пространство для целей макета.

Смотрите также: http://developer.android.com/reference/android/view/View.html#setVisibility(int)

Ответ 3

Измените invisible на gone, что сделает трюк.

public static final int View.INVISIBLE

Это представление невидимо, но оно все еще занимает место для целей макета. Используйте с setVisibility (int).

См. View.GONE и View.INVISIBLE

Ответ 4

invisible будет занимать то же место, что и visible. Установите видимость на gone, если вы хотите, чтобы она не занимала места.