部分屏幕上的进度对话框
Progress Dialog over partial screen
我有一个包含三个选项卡的片段。在其中一个选项卡上,我有一个对话框,该对话框在后台同步进行时旋转。但是当后台同步进行时,我需要能够继续处理其他部分。
我目前正在使用 dialog.setCancelable(false)
退出对话框,以便我可以使用应用程序的其余部分。但这在正在进行同步的片段上给了我一个情绪化的屏幕。
有没有办法让对话框只覆盖部分屏幕(只覆盖正在进行同步的片段)?换句话说,对话框不会占据整个屏幕,这样我就可以在不取消对话框的情况下移动到其他选项卡?
java 代码中对话框的实现:
dialog = new Dialog(getActivity());
dialog.requestWindowFeature(Window.FEATURE_PROGRESS);
dialog.setCancelable(true);
dialog.setContentView(R.layout.dialog_progress_bar);
dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
dialog.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ProgressBar
android:id="@+id/dialogProgressBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"/>
</LinearLayout>
不, 你无法通过 Dialog
实现此行为。
#. 由于您正在使用 Fragment
并希望显示 progress
同步,因此我认为您可以添加一个 ProgressBar
在您的 Fragment layout
XML 中,而不是根据 sync
状态使用 Dialog
和 show/hide ProgressBar
。
状态:
- 当同步为
going on
时,仅显示 ProgressBar
并隐藏其他 Views
。
- 同步
completed
时,根据您的需要隐藏 ProgressBar
并显示其他人 Views
。
#. 你也可以在你的 Fragment layout
XML 中使用 SwipeRefreshLayout 来表示进度正在进行中。当sync
进行时,它会show
一个循环ProgressBar
,当sync
完成时,它会自动hide
。
这里有一个很好的教程:Android Swipe Down to Refresh ListView Tutorial
希望对你有所帮助~
我有一个包含三个选项卡的片段。在其中一个选项卡上,我有一个对话框,该对话框在后台同步进行时旋转。但是当后台同步进行时,我需要能够继续处理其他部分。
我目前正在使用 dialog.setCancelable(false)
退出对话框,以便我可以使用应用程序的其余部分。但这在正在进行同步的片段上给了我一个情绪化的屏幕。
有没有办法让对话框只覆盖部分屏幕(只覆盖正在进行同步的片段)?换句话说,对话框不会占据整个屏幕,这样我就可以在不取消对话框的情况下移动到其他选项卡?
java 代码中对话框的实现:
dialog = new Dialog(getActivity());
dialog.requestWindowFeature(Window.FEATURE_PROGRESS);
dialog.setCancelable(true);
dialog.setContentView(R.layout.dialog_progress_bar);
dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
dialog.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ProgressBar
android:id="@+id/dialogProgressBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"/>
</LinearLayout>
不, 你无法通过 Dialog
实现此行为。
#. 由于您正在使用 Fragment
并希望显示 progress
同步,因此我认为您可以添加一个 ProgressBar
在您的 Fragment layout
XML 中,而不是根据 sync
状态使用 Dialog
和 show/hide ProgressBar
。
状态:
- 当同步为
going on
时,仅显示ProgressBar
并隐藏其他Views
。 - 同步
completed
时,根据您的需要隐藏ProgressBar
并显示其他人Views
。
#. 你也可以在你的 Fragment layout
XML 中使用 SwipeRefreshLayout 来表示进度正在进行中。当sync
进行时,它会show
一个循环ProgressBar
,当sync
完成时,它会自动hide
。
这里有一个很好的教程:Android Swipe Down to Refresh ListView Tutorial
希望对你有所帮助~