2011-03-23 140 views
1

我在我的應用程序中有一個alertdialog和進度對話框。我希望我的進度對話框和警報對話框看起來與iphone中的一樣。我如何改變它們的背景來實現這一目標?在android中更改progressdialog和alertdialog背景?

編輯: 也可以使用自定義視圖來實現這種效果嗎?擴展進度對話類的東西.....? 感謝您的幫助。

+0

可能重複[我怎樣才能更改Android警報對話框的背景?](http://stackoverflow.com/questions/3118601/how-can-i-change-the-background-of-android-alert-dialogs) – 2012-06-30 09:50:53

回答

0

1)創建一個自定義對話框的java類,像這樣的上面:

你可以簡單的複製和粘貼以上內容到新的Java文件,不需要改變。

package com.your.app; 

import android.app.Activity; 
import android.app.Dialog; 
import android.app.ProgressDialog; 
import android.os.Bundle; 
import android.view.View; 
import android.view.Window; 
import android.widget.Button; 
import android.widget.TextView; 

public class CustomProgressDialog extends Dialog { 

public Activity c; 
public Dialog d; 
private String progressTitle; 
private String progressComments; 
private TextView tvProgressTitle; 
private TextView tvProgressComments; 

public CustomProgressDialog(Activity a) { 
    super(a); 
    // TODO Auto-generated constructor stub 
    this.c = a; 
} 
public CustomProgressDialog(Activity a,String progressTitle,String progressComments) { 
    super(a); 
    // TODO Auto-generated constructor stub 
    this.progressTitle = progressTitle; 
    this.progressComments = progressComments; 
    this.c = a; 
} 

@Override 
protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(R.layout.dialog_progress); 
    tvProgressTitle = (TextView) findViewById(R.id.tvProgressTitle); 
    tvProgressComments = (TextView) findViewById(R.id.tvProgressComments); 
    tvProgressTitle.setText(this.progressTitle); 
    tvProgressComments.setText(this.progressComments); 

} 
} 

2)創建一個名爲在具有上述內容的佈局文件夾dialog_progress一個新的.xml文件:

(這只是一個簡單的例子,看起來像Android的默認進度對話框,但你可以創建自己的佈局)

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="100dp" 
android:layout_marginLeft="15dp" 
android:layout_marginRight="15dp" 
android:background="#EDEDED" 
android:orientation="vertical" 
> 
<LinearLayout 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    android:layout_gravity="center" 
    > 
    <TextView 

     android:layout_marginLeft="100dp" 
     android:id="@+id/tvProgressTitle" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 

     android:layout_margin="10dp" 
     android:text="Loading..." 
     android:textColor="#000000" 
     android:textSize="17dp" 
     android:textStyle="bold"/> 

</LinearLayout> 

<View 
    android:layout_width="wrap_content" 
    android:layout_height="1dp" 
    android:visibility="visible" 
    android:id="@+id/ctview2" 
    android:background="#000000" 
    /> 
<LinearLayout 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    > 

    <ProgressBar 
     android:layout_marginLeft="30dp" 
    android:layout_gravity="center" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/progressBar" 
     /> 

    <TextView 
     android:layout_marginLeft="15dp" 
     android:textColor="#000000" 
     android:gravity="center" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:text="Please wait." 
     android:id="@+id/tvProgressComments" /> 


</LinearLayout> 

3)所以,如果你想使用它,簡單的添加您的活動驗證碼:

CustomProgressDialog mprogress = new CustomProgressDialog(MainActivity.this,"Loading...","Please wait."); 
     mprogress.show(); 

而當你想放棄它,只需調用mprogress.dismiss();