2011-03-23 7 views
1

J'ai un dialogue alertdialog et de progrès dans mon application. Je veux que mon dialogue de progression et le dialogue d'alerte ressemblent à ceux de l'iphone. comment puis-je changer l'arrière-plan des deux pour y parvenir?changer progressdialog et alertdialog fond dans Android?

Editer: Puis-je obtenir cet effet en utilisant une vue personnalisée? Quelque chose qui étend la classe de dialogue de progrès .....? merci pour votre aide.

+0

double possible de [Comment puis-je changer l'arrière-plan des boîtes de dialogue d'alerte Android?] (http://stackoverflow.com/questions/3118601/how-can-i-change-the-background-of-android-alert-dialogs) –

Répondre

0

1) Créer une boîte de dialogue personnalisée classe java, comme celui-ci ci-dessus:

Vous pouvez simple copier et coller le contenu ci-dessus dans le nouveau fichier Java , aucun changement n'est nécessaire

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) Créer un nouveau fichier .xml appelé dialog_progress dans votre dossier de mise en page qui a le contenu ci-dessus:

(Il est juste un exemple simple qui ressemble à la boîte de dialogue de progression par défaut Android, mais vous pouvez créer votre propre mise en page)

<?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) Donc, si vous voulez l'utiliser, simple ajouter dans votre activité ce code:

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

Et quand vous voulez rejeter, appelez mprogress.dismiss();