Ответ 1
Поскольку вы должны установить видимость на gone
, если хотите, чтобы представление не занимало места.
У меня есть следующий 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 по-прежнему занимает пробел, заставляя заполнять между двумя другими линеаритами в макете, почему? Как мне сделать это не занимать места?
Поскольку вы должны установить видимость на gone
, если хотите, чтобы представление не занимало места.
В документации Invisible
говорится:
Это представление невидимо, но оно все еще занимает место для целей макета.
Поэтому настройка видимости макета на невидимую просто скрывает макет, но не освобождает потребляемое пространство. Если вы хотите сделать это, вам необходимо установить видимость.
Gone
делает то, что вы хотите:
Это представление невидимо, и оно не возьмите любое пространство для целей макета.
Смотрите также: http://developer.android.com/reference/android/view/View.html#setVisibility(int)
Измените invisible
на gone
, что сделает трюк.
public static final int View.INVISIBLE
Это представление невидимо, но оно все еще занимает место для целей макета. Используйте с setVisibility (int).
См. View.GONE
и View.INVISIBLE
invisible
будет занимать то же место, что и visible
. Установите видимость на gone
, если вы хотите, чтобы она не занимала места.