0

ProgressBarをTableLayoutの上に配置しようとしています。

コード:

<?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:baselineAligned="false"
    android:orientation="vertical" >

<ProgressBar
    android:id="@+id/bar_Update"
    style="?android:attr/progressBarStyleLarge"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:padding="250dp"
    android:visibility="visible" />

<ScrollView 
    android:id="@+id/ScrollView01" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content">

<TableLayout    
    android:id="@+id/tableLayout1"  
    android:layout_width="fill_parent"  
    android:layout_height="wrap_content"  
    android:shrinkColumns="*"  
    android:stretchColumns="*"
    android:gravity="center_horizontal"
    android:layout_gravity="top">    

      <TableRow 
          android:id="@+id/RowTitle" 
          android:layout_width="wrap_content" 
          android:layout_height="wrap_content">

      <TextView
          android:id="@+id/Title"
          android:layout_width="fill_parent"
          android:layout_height="60px"
          android:gravity="center"
          android:text="Unterichtsausfall: \n"
          android:textSize="20dp"
          android:textStyle="bold"
          android:typeface="serif" >
      </TextView>

      <ImageView
          android:id="@+id/imgUpdate"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:adjustViewBounds="false"
          android:baselineAlignBottom="false"
          android:clickable="true"
          android:src="@drawable/refresh" />

    </TableRow>   

</TableLayout>
</ScrollView>

</LinearLayout>

setVisibility(View.VISIBLE)プログレスバーをレイアウトの上に表示するためにコードで使用していますが、機能していません。消えて表示するために、を使用していsetVisibility(View.INVISIBLE)ます。私は何が間違っているのですか?私の目標は、インターネットからデータを取得することです。この間、スピナーが表示されています。データがフェッチされるとすぐにテーブルに表示され、スピナーはなくなります。

ありがとう!

4

2 に答える 2

1

「上」と「上」にはわずかな違いがあります。「オントップ」とは、通常、プログレスバーで行いたいように、通常、下のグラフィックをカバーすることを意味します。

「上」は、通常、画面の上部に向かって高くなることを意味します。そのため、ScrollViewとTableLayoutは画面の下部に近くなります。

ProgressBarが「OnTop」の場合はView.INVISIBLE問題ありません。しかし、あなたProgressBarは下のレイアウトの「上」にあります。したがって、実装した方法では、非表示にするためにに設定する必要がありますView.GONE


下のレイアウトの「上」または「上」にプログレスバーを表示する場合は、のRelativeLayout代わりにトップレベルのレイアウトを作成する必要がありLinearLayoutます。


最後に、私は何が悪いのか理解していません。レイアウトまたはコードの動作で正確に機能していないものは何ですか?

于 2013-03-26T22:05:21.027 に答える
0

プログレスバーがテーブルレイアウトの下に隠れていたというこの問題に遭遇しました。試行錯誤の末、プログレスバーを修正して一番上に表示し、テーブルの上に表示することができました。

基本的なレイアウトを再配置する必要があり、プログレスバーを外側のレイアウト内に配置し、tableLayoutをネストされたレイアウト内に配置しました。プログレスバーがテーブルを含むネストされたレイアウトの後にある場合にも、順序付けが必要でした。

作業中はこんな感じでした…。

<RelativeLayout....outer layout

    <ScrollView....
    <RelativeLayout....nested layout
         Some TextViews etc...
        <TableLayout.....inside nested layout/>
    </RelativeLayout>
    </ScrollView>
  <ProgressBar....inside outer layout
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:foregroundGravity="center_vertical|center_horizontal"/>
</RelativeLayout>
于 2018-04-04T10:39:09.980 に答える