2017-05-09 8 views
0

ich eine Aktivität mit einem Thema verknüpft haben (in AndroidManifest.xml)ProgressDialog mit benutzerdefinierten Thema

<activity 
     android:name=".BenchTestActivity" 
     android:parentActivityName=".HomeActivity" 
     android:theme = "@style/AppTheme.CaeTheme"> 

Die AppTheme.CaeTheme enthält nichts (im Moment), aber AppTheme ist:

<style name="AppTheme" parent="Theme.AppCompat.Light"> 
    <item name="android:background">@color/colorPrimary</item> 
</style> 

(colorPrimary ist dunkelblau)

Jetzt definiere ich einen progressDialog in oben genannten Aktivität.

progressDialog = new ProgressDialog(BenchTestActivity.this); 
progressDialog.setProgressStyle(R.style.ProgressDialog); 

und hier die ProgressDialog Stil:

<style name="ProgressDialog"> 
    <item name="android:alertDialogStyle">@style/CustomAlertDialogStyle</item> 
    <item name="android:layout_centerHorizontal">true</item> 
    <item name="android:layout_centerVertical">true</item> 
    <item name="android:visibility">gone</item> 
</style> 
<style name="CustomAlertDialogStyle"> 
    <item name="android:background">@color/colorBackgroundProgressDialog</item> 
    <item name="android:textColorPrimary">#e6e6e6</item> 
</style> 

colorBackgroundProgressDialog ist ein helles Grau. Ich habe erwartet, dass diese Farbe als Hintergrund für meinen Fortschrittsdialog erhalten wird, aber das ist nicht, was passiert (die Hintergrundfarbe ist dunkelblau, colorPrimary). Der Hintergrund des Aktivitätsthemas ist also der Gewinn. Wie kann ich eine benutzerdefinierte Farbe für den Fortschrittsdialog festlegen?

Vielen Dank im Voraus.

+0

ja es ist aufgrund des Themas für die Aktivität, bitte überprüfen Sie es erneut –

+0

Ich weiß. Aber wie kann ich es richtig einstellen? Ich brauche dieses Thema für die Aktivität. Wie kann man den Hintergrund des progressDialogs anpassen? – Massimo

Antwort

1

Verwenden Sie den Konstruktor accepts theme as argument und passendes Thema.

 


    ProgressDialog progressDialog = new ProgressDialog(context, R.style.MyProgressDialogTheme); 
    progressDialog.show(); 

 

In styles.xml:

<style name="MyProgressDialogTheme" parent="ThemeOverlay.AppCompat.Dialog.Alert"> 
    <!-- override attributes here --> 
</style> 
+0

Hi, wenn ich diesen Konstruktor verwende, wird der progressDialog nicht angezeigt ... – Massimo

+0

@Massimo, höchstwahrscheinlich hast du ein falsches Thema angewendet. Aktualisiert die Antwort, überprüft, funktioniert wie erwartet. – azizbekian

+0

Nein, mit diesem Konstruktor wird der progressDialog nicht angezeigt. Ich weiß nicht warum, aber ... das Paar progressDialog = new ProgressDialog (BenchTestActivity.this); progressDialog.setProgressStyle (R.style.ProgressDialog); sollte gleich sein. Aber, wie ich in meiner Antwort gesagt habe, überschreibt dieser Stil das Thema der Aktivität nicht. – Massimo

0

in Ihrem styles.xml

<style name="Custom" parent="android:Theme.DeviceDefault.Dialog"> 
    <item name="DialogTitleAppearance">@android:style/TextAppearance.Medium</item> 
    <item name="DialogTitleText">Loading……</item> 
    <item name="DialogSpotColor">@android:color/holo_orange_dark</item> 
    <item name="DialogSpotCount">4</item> 
</style> 

und in Ihrer Tätigkeit, java:

SpotsDialog spotsDialog = new SpotsDialog(Context,R.style.Custom); 
spotsDialog.show(); //where you want 
spotsDialog.dismiss(); //where you want 

und füge Abhängigkeit

compile 'com.github.d-max:spots-dialog:[email protected]' 
Verwandte Themen