中心垂直。 &安培;卧式。 TableLayout中的ProgressBar?

时间:2012-04-04 23:26:24

标签: android xml progress-bar android-asynctask tablelayout

我有一个包含TableLayout的ScrollView。当AsyncTask完成为我提取数据时,以编程方式激活tablelayout。然后,一种方法根据返回的数据量构建TableRows,并将它们附加到TableLayout。

在XML中,TableLayout中唯一的项目是ProgressBar。这是XML:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/electionsScrollView" android:layout_width="wrap_content"
    android:layout_height="wrap_content">


    <TableLayout android:id="@+id/electionsQuestionContainer"
        android:layout_width="match_parent" android:layout_height="wrap_content">

        <ProgressBar android:id="@+id/electionsProgressBar"
            style="?android:attr/progressBarStyleLarge" android:layout_width="wrap_content"
            android:layout_height="match_parent" android:layout_gravity="center_vertical|center_horizontal" />

    </TableLayout>
</ScrollView>

我显然无法将ProgressBar放在scrollview中,因为scrollview只能托管一个项目(tablelayout)。我想我不想把ProgressBar放在一个表行中,因为我认为删除比运行progressBar.setVisibility(View.GONE);的AsyncTask更麻烦。那么tableRow是我唯一的选择,还是因为我的ProgressBar没有在屏幕中间垂直和水平居中的原因?

1 个答案:

答案 0 :(得分:0)

我差不多到了一半。通过更改TableLayout的layout_gravity:

<TableLayout android:id="@+id/electionsQuestionContainer"
    android:layout_width="match_parent" android:layout_height="wrap_content"
    android:layout_gravity="center_vertical|center_horizontal">

但是,当我以编程方式添加行时,这会破坏外观。有谁知道哪个Gravity.CONSTANT会使tableLayout返回默认值?当我没有为TableLayout的layout_gravity设置任何东西时,它看起来很完美。所以现在,我的ProgressDialog完全符合我的喜好,但是填充的行看起来不正确。怎么了?顶部的桌子距离屏幕的顶部大约一半(换句话说,我只能看到第一个桌面行的一半,其余部分离屏幕的顶部不能滚动到达)。

我最终使用了两个单独的布局,并删除旧的布局。