0

TableLayoutを保持するScrollViewがあります。AsyncTaskがデータのフェッチを終了すると、テーブルレイアウトがプログラムでアクティブになります。次に、メソッドは、返されたデータの量に基づいて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>

スクロールビューは1つのアイテム(テーブルレイアウト)しかホストできないため、プログレスバーをスクロールビューのすぐ内側に配置することはできません。ProgressBarをテーブルの行に配置したくないと思います。これは、progressBar.setVisibility(View.GONE);を実行するだけのAsyncTaskよりも削除するのが面倒だと思うからです。それで、tableRowは私の唯一のオプションですか、それとも私のProgressBarが垂直方向と水平方向の両方で画面の中央に配置されない理由がありますか?

4

1 に答える 1

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が希望どおりに表示されましたが、行に入力されたものが正しく表示されません。どうしたの?一番上のテーブル行は画面の上部から約半分離れています(つまり、最初のテーブル行の半分しか見えず、残りは画面の上部から離れており、スクロールして到達することはできません)。

私は2つの別々のレイアウトを使用し、古いものを削除することになりました。

于 2012-04-05T04:52:00.047 に答える