2011-07-14 36 views
0

我想要顯示ProgressDialog,但限制其對子視圖的可見性。據我所知,ProgressDialog佔用了整個屏幕,並禁止訪問屏幕的任何部分,直到ProgressDialog被解除。Android:將ProgressDialog限制爲子視圖

我推出了自己的選項卡控件,當一個選項卡下的內容忙於執行冗長的任務時,我希望ProgressDialog僅在該選項卡的內容區域內顯示。用戶可以隨時選擇另一個選項卡,而另一個選項卡忙於執行其任務並顯示ProgressDialog。

我懷疑這是不可能的,將不得不推出我自己的ProgressDialog。但是,由於創建ProgressDialog的第一個參數是上下文,並且通常設置爲「this」,所以我想知道是否可以從子視圖檢索上下文,但僅限於子視圖。 View上的getContext似乎獲得了應用程序本身的上下文。

+0

此後嘗試插入了android標籤also..It將幫助用戶輕鬆找到您的問題... – Aravindhan

回答

0

考慮到Android在任何特定時間只在前臺有一個Activity,我認爲這對於正常活動來說可能是不可能的(儘管可能會有錯誤)。但我想Fragments可能是你在找什麼?

+0

其實Android的可以在前臺幾項活動。我已經在使用ActivityGroup來做這件事。我想我必須使用ViewSwitcher和一個ProgressBar設置爲不確定狀態來推出我自己的產品。 – Johann

+0

有趣的不知道這個:)(所以你可以在屏幕上一次查看幾個活動呢?) –

0

基本的ProgressDialog控制你的線程,因此不允許你按你的意思去做。

一個普通的Widget(而不是對話框),類似於普通的Progress或者你自己推出的任何東西都可以做到這一點。

如果您已經有忙的標籤上的其他內容和要「蓋」,你可以使用一個Fragment代替..

最容易實現的最有可能是覆蓋你的標籤一個Widget內容和隱藏等元素..最好在代碼使用的是後者..

1

就可以實現這一個取巧的辦法,針鋒相對工作對我來說..

在佈局文件,該文件規定了標籤內容,把進度條作爲:

<?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顯示選項卡的內容,顯示在清單或通過進度條(僅一次一個):

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(); 
     } 

和下載線程完成後,通過一個處理程序或runOnUIThread ,使可視性扭轉爲

progressBar.setVisibility(View.INVISIBLE); 
updatesListView.setVisibility(View.VISIBLE);