我有一个包含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没有在屏幕中间垂直和水平居中的原因?
答案 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完全符合我的喜好,但是填充的行看起来不正确。怎么了?顶部的桌子距离屏幕的顶部大约一半(换句话说,我只能看到第一个桌面行的一半,其余部分离屏幕的顶部不能滚动到达)。
我最终使用了两个单独的布局,并删除旧的布局。