2013-09-04 5 views
7

habe ich die folgende Zeile in meinem Manifest:anzeigen Licht Alertdialog mit Theme.Light.NoTitleBar

android:theme="@android:style/Theme.Light.NoTitleBar" 

keine Titelleiste haben und die Light-Version von Alertdialog in meiner App angezeigt werden, wie in Beispiel: enter image description here

Aber es ist in dunkelem Thema Anzeige noch:

enter image description here

My Dialog Java co de:

new AlertDialog.Builder(FreeDraw.this) 
    .setIcon(android.R.drawable.ic_dialog_alert) 
    .setTitle("Clear Drawing?") 
    .setMessage("Do you want to clear the drawing board?") 
    .setPositiveButton("Yes", new DialogInterface.OnClickListener() { 

     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      finish(); 
      startActivity(getIntent()); 
     } 
    }) 
    .setNegativeButton("No", null) 
    .show(); 

Wie behalte ich das Theme-Licht für AlertDialog?

Antwort

26

Der obere Dialog in Ihrem Beitrag ist ein Holo Light-Themen-Dialog, während der untere Dialog der ältere Themen-Dialog ist. Unter den Honeycomb-Versionen können Sie keinen Holo Light-Themendialog aufrufen. Hier ist ein kleiner Ausschnitt, den ich benutze, um das Lichtthema zu wählen, basierend auf welcher Android-Version das Gerät läuft.

Die AlertDialog.Builder wird das Thema des Kontexts verwenden, den es bestanden hat. Sie können eine ContextThemeWrapper verwenden, um dies zu setzen.

ContextThemeWrapper themedContext; 
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { 
    themedContext = new ContextThemeWrapper(FreeDraw.this, android.R.style.Theme_Holo_Light_Dialog_NoActionBar); 
} 
else { 
    themedContext = new ContextThemeWrapper(FreeDraw.this, android.R.style.Theme_Light_NoTitleBar); 
} 
AlertDialog.Builder builder = new AlertDialog.Builder(themedContext); 
+0

Ich sehe, dass auf meinem Handy mit JB 4.2.2 – Si8

+0

Haben Sie den Code in meiner Antwort versuchen? –

+0

Ich habe versucht, es funktioniert, danke. –

3

Sie müssen eine AlertDialog Builder verwenden. Damit können Sie Ihrem Dialog einen Stil zuweisen. Schauen Sie das folgende Beispiel: http://pastebin.com/07wyX0V3

<style name="popup_theme" parent="@android:style/Theme.Light"> 
    <item name="android:windowBackground">@color/back_color</item> 
    <item name="android:colorBackground">@color/back_color</item> 
</style> 
+0

Ich benutze es bereits. Update meine Frage :) – Si8

+0

Aber Sie müssen den Stil wie einstellen -> siehe meine Bearbeitung – JavaDM

+0

Ich werde es versuchen und aktualisieren Sie. Vielen Dank. – Si8

13

Sie so etwas wie dieses verwenden können, wenn Ihr die Schaffung AlertDialog:

AlertDialog.Builder builder = null; 
if(Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { 
    builder = new AlertDialog.Builder(BaseActivity.this); 
} else { 
    builder = new AlertDialog.Builder(BaseActivity.this, AlertDialog.THEME_HOLO_LIGHT); 
} 
// ... do your other stuff. 

Dieser Code wird Holo Styled Alertdialog in neueren Versionen und normalen Gerät basiert Alertdialog auf Geräten erstellen mit ältere Version von Android.

+0

Das funktioniert großartig. Vielen Dank. – Mahm00d