目前,当我显示 a 时ProgressDialog
,它会占据包括选项卡在内的整个屏幕,如下所示:
这是否可能仅涵盖活动并保留选项卡功能?理想情况下,它会像这样显示,以便我可以单击按钮以离开加载不同的活动,而不是等待当前活动完成加载:
这可能吗?我应该采取另一种方法来实现这个结果吗?
目前,当我显示 a 时ProgressDialog
,它会占据包括选项卡在内的整个屏幕,如下所示:
这是否可能仅涵盖活动并保留选项卡功能?理想情况下,它会像这样显示,以便我可以单击按钮以离开加载不同的活动,而不是等待当前活动完成加载:
这可能吗?我应该采取另一种方法来实现这个结果吗?
我觉得ProgressDialog
在这种情况下使用 不是最合适的选择。阻塞整个窗口以指示用户此时不能执行任何操作是对话框的逻辑。
如果您想显示活动某些部分的进度,您应该使用 aProgressBar
代替。如果您希望外观像一个进度对话框,那么使用可以自定义ProgressBar
(看起来像进度对话框),并动态附加/删除或更改可见性以显示或隐藏它。
我想你也可以看看这个:https ://stackoverflow.com/a/18553879/827110
(我假设您正在寻找一个概念性的答案,即找到实现这种行为的最合适的方法)
扩展您进行自定义的进度对话框类
公共类 CustomProgressDialogClass 扩展 ProgressDialog{
public CustomProgressDialogClass(Context context) {
super(context, R.style.CustomDialogThemeForPorgressbar);
// TODO Auto-generated constructor stub
}
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.progress_layout);
}
} 在布局progress_layout
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/progressbar_layout">
<RelativeLayout
android:id="@+id/relativeLayout1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:background="@drawable/loader_bg" >
<ProgressBar
android:id="@+id/progressbarlayout_progressbar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
在值文件夹中创建样式文件夹并将其粘贴
<style name="CustomDialogThemeForPorgressbar" parent="@android:style/Theme.Dialog">
<item name="android:windowBackground">@color/transparent</item>
<item name="android:windowIsFloating">false</item>
<item name="android:windowNoTitle">true</item>
<item name="android:gravity">center</item>
</style>
对 windowIsFloating、gravity 和 windowNoTitle 进行更改以显示在选项卡主机中