【发布时间】:2019-10-04 06:13:52
【问题描述】:
我有一个如下图所示的布局,包含一个标题、一些文本视图和一个列表视图。标题与屏幕顶部对齐,列表与屏幕底部对齐,应尽可能占用空间。
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MyActivity">
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="12dp"
android:text="Title"
android:textSize="30sp" />
<TextView
android:id="@+id/some_text"
android:layout_below="@id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="6dp"
android:text="Some random text which can change"
android:textSize="14sp" />
<ScrollView
android:id="@+id/list_wrapper"
android:layout_below="@id/some_text"
android:layout_alignParentBottom="true"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
Activity 创建后,标题下方的文本视图中的文本可以动态更改,当它发生时,它可能会缩小,列表视图可能会更改其大小。我想防止这种情况发生,以便列表视图保持其位置和大小,并且只有上方的文本视图会缩小并向下移动到列表中,如下图所示。
我怎样才能做到这一点?任何布局类型我都可以,我只是以上面的 RelativeLayout 代码为例。
如果列表视图可以具有固定大小会很容易,但我希望列表视图占用尽可能多的空间,并且在创建活动后我希望它保持原位而不改变其大小。
【问题讨论】:
-
我想到的一个解决方案是创建两个文本视图,并在列表上方锚定第二个较小的文本视图并将其可见性设置为 false。然后稍后当文本必须更改时,我只需将第一个 textview 的可见性设置为 false 并将第二个 textview 的可见性设置为 true。但这是一个非常肮脏的解决方案,而且我不确定布局是否会尊重与隐藏项相关的位置约束。