Android:无法正常设置TableLayout

时间:2012-01-23 08:36:29

标签: android width scrollbar android-tablelayout

我在活动中显示来自DB的数据。我想在底部有一个桌子和按钮。对于数据,我认为TableLayout是最佳选择。我将TableLayout添加到Horizo​​ntalView& ScrollView使其垂直滚动&水平。我动态添加所有行 - 包括标题。这部分工作正常。

我想要的是当内容小于屏幕宽度时,它应该占据整个屏幕宽度。例如。如果一张桌子适合纵向模式,那么在景观模式中,它们将是右边的空白区域。我不希望那个空间变空,而是占据所有列。如果行宽大于屏幕宽度,则根本没有问题 - 因为出现了horiontal滚动条。

我尝试了一些变化,但没有任何帮助。知道要做什么设置来使用所有空间(如果有所有avbl)&展示下。

是的,还有1个水平滚动条问题,它出现在最后一行。我想要它 出现在最后一行下方 - 因此最后一行的边框是可见的。我的XML:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
 android:layout_height="fill_parent" android:orientation="vertical">

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="wrap_content"
    android:scrollbars="horizontal|vertical">

<HorizontalScrollView android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="10dp" android:layout_marginBottom="10dp" > 

<TableLayout android:id="@+id/browseTable" android:layout_width="fill_parent"
    android:layout_height="wrap_content" android:layout_marginBottom="20dp"
    android:background="#FF0000" android:stretchColumns="1,2,3">

</TableLayout>

</HorizontalScrollView>
</ScrollView>

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="wrap_content" 
android:orientation="horizontal"  android:gravity="center" 
android:layout_marginTop="15dp">
    <Button android:id="@+id/browseAddBtn" android:text="Add" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:layout_marginRight="10dp" />
    <Button android:id="@+id/browseViewBtn" android:text="Edit" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:layout_marginRight="10dp"  />
    <Button android:id="@+id/browseReturnBtn" android:text="Return" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" />        
  </LinearLayout>

</LinearLayout>

输出: enter image description here

2 个答案:

答案 0 :(得分:4)

我在解决您的问题时找到了一件事,在 Horizo​​ntalScrollView 中使用 TableLayout 。当我们在Horizo​​ntal Scroll View中使用Table Layout时, android:stretchColumns 不起作用。因此,当旋转屏幕或列的宽度数据较少时,您将获得空白区域。

我希望你明白这一点。我试图通过用其他一些替换水平滚动视图来解决这个问题。如果我得到解决方案,我会发布答案。再见。

修改

Tvd 最后我找到了解决问题的方法。在下面对XML布局文件进行更改。

<HorizontalScrollView>

使用

        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"
        android:fillViewport="true"

如果您希望拉伸所有列,请在 TableLayout 中使用stretchColumns = "*"

再见。 : - )

答案 1 :(得分:0)

我做了一些改变。您的一些问题将通过以下布局代码来解决

 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<ScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:scrollbars="horizontal|vertical" >

    <HorizontalScrollView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="10dp"
        android:layout_marginTop="10dp" >

        <TableLayout
            android:id="@+id/browseTable"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="20dp"
            android:background="#FF0000" >
        </TableLayout>
    </HorizontalScrollView>
</ScrollView>

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    style="@android:style/ButtonBar"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:orientation="horizontal" >

    <Button
        android:id="@+id/browseAddBtn"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginRight="10dp"
        android:layout_weight="1"
        android:text="Add" />

    <Button
        android:id="@+id/browseViewBtn"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginRight="10dp"
        android:layout_weight="1"
        android:text="Edit" />

    <Button
        android:id="@+id/browseReturnBtn"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Return" />
</LinearLayout>