2011-07-14 30 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);