2011-07-14 4 views
0

ProgressDialogを表示したいが、子ビューの可視性を制限したい。私が知る限り、ProgressDialogは画面全体を占有し、ProgressDialogが終了するまで画面の一部にアクセスすることを無効にします。Android:ProgressDialogを子ビューに限定する

自分のタブコントロールをロールして、あるタブのコンテンツが長時間の作業をしているときに、そのタブのコンテンツ領域内にのみProgressDialogを表示します。ユーザーはいつでも別のタブを選択できますが、他のタブはタスクを実行中であり、ProgressDialogが表示されています。

私はそれが可能ではないと私自身のProgressDialogをロールバックする必要があると思う。しかし、ProgressDialogを作成する際の最初のパラメータはコンテキストであり、通常は「this」に設定されているため、おそらく子ビューからコンテキストを取得できますが、子ビューのみに限定されているのだろうかと思いました。ビューのgetContextは、アプリケーション自体のコンテキストを取得するようです。

+0

として逆に作る来世はalso..Itは、ユーザーが簡単にあなたの質問を見つけるのに役立ちますアンドロイドタグを挿入してみてください... – Aravindhan

答えて

0

Androidはいつでもフォアグラウンドで1つのアクティビティしか持たないことを考慮すると、これは通常のアクティビティでは可能ではないと考えられます(間違いかもしれません)。しかし、私はFragmentsがあなたが探しているかもしれないと思いますか?

+0

実際のAndroidは、フォアグラウンドでいくつかの活動を持つことができます。私はすでにActivityGroupを使ってそれをやっています。私はViewSwitcherとProgressBarを使って自分自身をロールバックして不確定にする必要があると思います。 – Johann

+0

面白いのはこれについて知りませんでした:)(スクリーンに一度に複数のアクティビティを表示できますか?) –

0

ベースProgressDialogはスレッドを制御するため、必要に応じて実行することはできません。

通常の進捗状況に似た通常のウィジェット(ダイアログではなく)は、あなた自身でロールするものを使用してトリックを行うことができます。

すでにビジーでタブ上の他のコンテンツを持っているとあなたはあなたの代わりにFragmentを使用することができることを「カバー」したい場合は...

実装する最も簡単で、最も可能性の高いあなたのタブをカバーしてウィジェットになりますコンテンツおよび他の要素を隠し..コードで素敵な後者を使用します。..

1

を使用すると、トリッキーな方法でこれを達成することができ、TATは、タブのコンテンツを指定するレイアウトファイル、で...私のため

を働きました進行状況バーを次のように入力します。

ハンドラまたはrunOnUIThreadを経由して、

if(list != null){ 
      progressBar.setVisibility(View.INVISIBLE); 
      updatesListView.setVisibility(View.VISIBLE); 
         adapter = new YourListAdapter(this, list); 
      updatesListView.setAdapter(adapter); 
     } else{ 
      progressBar.setVisibility(View.VISIBLE); 
      updatesListView.setVisibility(View.INVISIBLE); 
      new Thread(downloadListContent).start(); 
     } 

とダウンロードスレッドの完了について:

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

    <FrameLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_weight="1" > 

     <ListView 
      android:id="@+id/updatesList" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" > 
     </ListView> 

     <ProgressBar 
      android:id="@+id/progressbar" 
      android:layout_gravity="center" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      /> 
    </FrameLayout> 

</LinearLayout> 

と活動TATのは、リストまたはによってプログレスバー(一度に一つだけ)のいずれかを表示し、タブのコンテンツを表示します、可視性が

progressBar.setVisibility(View.INVISIBLE); 
updatesListView.setVisibility(View.VISIBLE); 
関連する問題