2013-09-04 11 views
7

Ho usato la seguente riga nel mio manifesto:Mostra Luce AlertDialog utilizzando Theme.Light.NoTitleBar

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

di avere alcuna barra del titolo e visualizzare la versione light di AlertDialog nella mia app, come nell'esempio: enter image description here

Ma è la visualizzazione in tema scuro ancora:

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(); 

Come mantenere la luce del tema per AlertDialog?

risposta

26

La finestra di dialogo superiore del post è una finestra di dialogo a tema Holo Light mentre quella in basso è la finestra di dialogo a tema precedente. Non è possibile ottenere una finestra di dialogo a tema Holo Light nelle versioni sotto Honeycomb. Ecco un piccolo frammento che uso per selezionare il tema della luce in base a quale versione di Android è in esecuzione il dispositivo.

AlertDialog.Builder utilizzerà il tema del contesto in cui è stato trasmesso. È possibile utilizzare un ContextThemeWrapper per impostare questo.

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

Lo vedo sul mio telefono con JB 4.2.2 – Si8

+0

Hai provato il codice nella mia risposta? –

+0

Ho provato, funziona, grazie. –

3

È necessario utilizzare un AlertDialog Builder. Con esso puoi impostare uno stile per il tuo Dialog. Guardate il seguente esempio: 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

Lo sto già utilizzando. Aggiorna la mia domanda :) – Si8

+0

Ma devi impostare lo stile come -> vedi la mia modifica – JavaDM

+0

farò un tentativo e ti aggiornerò. Grazie. – Si8

13

si può usare qualcosa di simile durante la creazione 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. 

Questo codice crea Holo Styled AlertDialog nelle versioni più recenti e normale dispositivo basato AlertDialog su dispositivi con versione precedente di Android.

+0

Funziona alla grande. Grazie. – Mahm00d