【发布时间】:2019-07-14 03:03:36
【问题描述】:
我有一个RelativeLayout,通过将LinearLayout 内部设置为View.VISIBLE,点击它就会展开。这很好用,但是一旦我将内部的 LinearLayout 设置为 INVISIBLE,LL 就会隐藏,但父级 RelativeLayout 会保持它的大小。
我真的必须在扩展之前存储 LayoutParams 以供以后恢复,还是有一些内置的魔法可以在其增长时自动缩小大小?
list_item.xml
<RelativeLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/expandArea"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="invisible"
>
</RelativeLayout>
ListAdapter.java
// shrinking does not work when:
v.findViewById(R.id.expandArea).setVisibility(View.INVISIBLE);
// whereas expanding works correct:
v.findViewById(R.id.expandArea).setVisibility(View.VISIBLE);
【问题讨论】:
-
使用
View.GONE而不是view.INVISIBLE -
使用 Visibility.GONE 隐藏视图。因为 INVISIBLE 意味着视图将存在但不可见。
标签: android android-linearlayout android-relativelayout