2013-04-12 63 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

你在不同的模擬器上試過了嗎? –