TableLayout 在放置在 ScrollView 中时被截断
TableLayout being truncated when placed inside ScrollView
我有一个用多行数据动态填充的 TableLayout。它包含的数据超出了屏幕的容量,因此我要求它可以滚动。
我的问题是,当我将 TableLayout 放在 ScrollView 中时,它似乎从 TableLayout 的顶部切断了很多行。
作为参考,完整的代码在这里(问题已经很杂乱了,无法容纳所有内容)http://pastebin.com/w7Fi3Bzz
请参阅下文,了解与我遇到的问题相关的代码
这是没有 ScrollView 的 XML:
<TableLayout
android:orientation="vertical"
android:fillViewport="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center_horizontal"
android:id="@+id/tbl_statistics"
android:stretchColumns="*"
android:paddingTop="20dp"
android:paddingBottom="20dp"
android:paddingLeft="20dp"
android:paddingRight="20dp"
>
</TableLayout>
它的样子:
这里是相同的 XML,带有一个封闭的 ScrollView:
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fillViewport="true"
>
<TableLayout
android:orientation="vertical"
android:fillViewport="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center_horizontal"
android:id="@+id/tbl_statistics"
android:stretchColumns="*"
android:paddingTop="20dp"
android:paddingBottom="20dp"
android:paddingLeft="20dp"
android:paddingRight="20dp"
>
</TableLayout>
</ScrollView>
这是 table 的样子,您可以看到 table 的顶部被截断了(它填充了完全相同的数据):
我在这里 LinearLayout not expanding inside a ScrollView 发现了类似的问题,但答案对我没有帮助。
在你的current layout中:
从 TableLayout
元素中删除 android:layout_gravity="center"
。
将 android:layout_weight="1"
添加到 ScrollView
元素。
清理并重建您的项目。
此外,fillViewport
属性仅适用于 ScrollView
s。
我只通过将 TableLayout 插入到 LinearLayout 中解决了同样的问题,LinearLayout 是 ScrollView 的唯一子项。我尝试了所有其他变体但没有成功(fillViewport
代表 ScrollView
,android:layout_weight="1"
代表 TableLayout
)。
我用TableLayout
动态插入Views
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TableLayout
android:id="@+id/activity_displayFields_tableLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp" />
</LinearLayout>
</ScrollView>
我有一个用多行数据动态填充的 TableLayout。它包含的数据超出了屏幕的容量,因此我要求它可以滚动。
我的问题是,当我将 TableLayout 放在 ScrollView 中时,它似乎从 TableLayout 的顶部切断了很多行。
作为参考,完整的代码在这里(问题已经很杂乱了,无法容纳所有内容)http://pastebin.com/w7Fi3Bzz
请参阅下文,了解与我遇到的问题相关的代码
这是没有 ScrollView 的 XML:
<TableLayout
android:orientation="vertical"
android:fillViewport="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center_horizontal"
android:id="@+id/tbl_statistics"
android:stretchColumns="*"
android:paddingTop="20dp"
android:paddingBottom="20dp"
android:paddingLeft="20dp"
android:paddingRight="20dp"
>
</TableLayout>
它的样子:
这里是相同的 XML,带有一个封闭的 ScrollView:
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fillViewport="true"
>
<TableLayout
android:orientation="vertical"
android:fillViewport="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center_horizontal"
android:id="@+id/tbl_statistics"
android:stretchColumns="*"
android:paddingTop="20dp"
android:paddingBottom="20dp"
android:paddingLeft="20dp"
android:paddingRight="20dp"
>
</TableLayout>
</ScrollView>
这是 table 的样子,您可以看到 table 的顶部被截断了(它填充了完全相同的数据):
我在这里 LinearLayout not expanding inside a ScrollView 发现了类似的问题,但答案对我没有帮助。
在你的current layout中:
从
TableLayout
元素中删除android:layout_gravity="center"
。将
android:layout_weight="1"
添加到ScrollView
元素。清理并重建您的项目。
此外,fillViewport
属性仅适用于 ScrollView
s。
我只通过将 TableLayout 插入到 LinearLayout 中解决了同样的问题,LinearLayout 是 ScrollView 的唯一子项。我尝试了所有其他变体但没有成功(fillViewport
代表 ScrollView
,android:layout_weight="1"
代表 TableLayout
)。
我用TableLayout
动态插入Views
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TableLayout
android:id="@+id/activity_displayFields_tableLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp" />
</LinearLayout>
</ScrollView>