我的加载圈工作正常但后面有一个白框,如here所示。我花了几个小时寻找解决方案,我发现的所有SO帖子都提出了与我使用的实现非常相似的实现。我也尝试将自定义主题应用于对话框并设置透明度,但这没有做任何事情。我不确定白色矩形究竟是什么,因为改变ProgressBar本身的属性似乎只会影响包含图像的中心的方块。
我为在AsyncTask期间运行的进度条定义了以下布局。
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@android:color/transparent" >
<ProgressBar
android:id="@+id/progressBar1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:indeterminate="true"/>
</FrameLayout>
下面是我使用上面显示的布局的对话框的方法。
public static ProgressDialog createProgressDialog(Context mContext) {
ProgressDialog dialog = new ProgressDialog(mContext);
try {
dialog.show();
} catch (WindowManager.BadTokenException e) {
}
dialog.setCancelable(false);
dialog.setContentView(R.layout.progressdialog);
return dialog;
}
public class FetchAcroTask extends AsyncTask<String, Void, String[]> {
Dialog progressDialog = null;
@Override
protected void onPreExecute() {
// Display loading circle
if (progressDialog == null) {
progressDialog = createProgressDialog(AcroActivity.this);
progressDialog.show();
} else {
progressDialog.show();
}
}
@Override
protected String[] doInBackground(String... params) {
if (params.length == 0) {
return null;
}
return GET(params[0]);
}
@Override
protected void onPostExecute(String[] resultStrs) {
if (resultStrs == null) {
acroAdapter.add("No results were found");
} else {
acroAdapter.addAll(resultStrs);
}
// Dismiss loading circle
progressDialog.dismiss();
}
}
}
提前致谢。
答案 0 :(得分:0)
由于Kostas留下的评论,我找到了解决方案。
我将我的ProgressBar声明转移到我的活动布局文件中,并在我的AsyncTask完成时隐藏它。
在我的活动的布局文件中:
<ProgressBar
android:id="@+id/progressBar1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true" />
在异步任务中:
@Override
protected void onPostExecute(String[] resultStrs) {
if (resultStrs == null) {
acroAdapter.add("No results were found");
} else {
acroAdapter.addAll(resultStrs);
}
// Dismiss loading circle
progressBar = (ProgressBar) findViewById(R.id.progressBar1);
progressBar.setVisibility(View.INVISIBLE);
}
谢谢。