2013-04-12 62 views
-1

我写下面的方法来显示进度条,但由白框四舍五入的进度条适合屏幕宽度,我不知道为什么。为什么进度条适合屏幕宽度?

public void showProgressBar() { 
    AlertDialog.Builder builder = new AlertDialog.Builder(activity); 
    ProgressBar pbar = new ProgressBar(activity, null, 
      android.R.attr.progressBarStyleLargeInverse); 
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(30, 50); 
    pbar.setLayoutParams(params); 
    builder.setView(pbar); 
    builder.setCancelable(true); 
    progressBar = builder.create(); 
    progressBar.show(); 
} 

当执行上述方法时显示为该图像的进度。

progress bar problem 我该如何解决这个问题?

+1

为什么不使用[ProgressDialog](http://developer.android.com/reference/android/app/ProgressDialog.html)? –

+0

我不需要任何文字旁边的风筝进度,如果我使用ProgressDialog它将适合屏幕宽度也作为进展轮保留对话框消息的权利。 –

回答

0

我以愚蠢的方式解决了这个问题,但它对我的工作很好。

public abstract class AbstractScreen implements IActivity { 

protected Response response; 
protected FragmentActivity activity; 
private CustomProgressDialog progress; 

public AbstractScreen(FragmentActivity activity) { 
this.activity = activity; 
} 

public abstract void loadScreen(); 

@Override 
public void preExecution() { 
// TODO Auto-generated method stub 

} 

@Override 
public void postExecution(Response response) { 
// TODO Auto-generated method stub 

} 

public void showProgressBar() { 


progress = new CustomProgressDialog(activity); 
progress.show(); 
} 

public void closeProgress() { 
progress.dismiss(); 
} 

public FragmentActivity getActivity() { 
return activity; 
} 

private class CustomProgressDialog extends Dialog { 

private Context context; 

public CustomProgressDialog(Context context) { 
super(context); 
this.context = context; 
loadScreen(); 
} 

public void loadScreen() { 

requestWindowFeature(Window.FEATURE_NO_TITLE); 
setContentView(R.layout.progress); 
setCancelable(false); 

} 

} 
} 

也添加此布局文件。

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_height="fill_parent" 
android:layout_width="fill_parent" 
android:orientation="vertical" 
android:layout_marginRight="-7dp" 
> 

<ProgressBar 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
style="?android:attr/progressBarStyleLarge" 
android:id="@+id/progressbar" 
android:layout_gravity="center_horizontal" 
android:max="100" 
/> 
</LinearLayout> 
1

您应该使用ProgressDialog,否,它不适合屏幕宽度。

ProgressDialog pd=new ProgressDialog(activity); 
pd.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
     pd.setIndeterminate(true); 
     pd.setCancelable(false); 
     pd.show(); 

这应该给你你想要的。

这样做:

ProgressDialog pd;//declare as a global variable 
public void showProgressBar() { 
pd=new ProgressDialog(activity); 
pd.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
     pd.setIndeterminate(true); 
     pd.setCancelable(false); 
     pd.show(); 

}

辞退,无论你以后想要的ProgressDialog

+0

+1使用'ProgressDialog'也意味着它几乎可以保证在各种设备上看起来正确。或者至少,比在问题的例子中把自己放在一起更好。 –

+0

我尝试了很多方法在屏幕上获得一个居中的旋钮,但是我没有得到我的目标,因为每次旋转者都被白色区域弄圆了,我不知道这个原因。顺便说一下,上面的代码给我和我之前尝试过的一样,并感谢你的回应。 –

+0

你在不同的模拟器上试过了吗? –