2013-09-04 5 views
7

użyłem następującą linię w moim manifeście:pokaz świetlny AlertDialog użyciu Theme.Light.NoTitleBar

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

nie mieć pasek tytułowy i wyświetlania światła wersji AlertDialog w mojej aplikacji, jak na przykład: enter image description here

Ale to wyświetlanie w ciemnym motywem nadal:

enter image description here

My Dialog Java współpracy 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(); 

Jak zachować motyw dla AlertDialog?

Odpowiedz

26

Górne okno dialogowe w twoim poście jest dialogiem o tematyce Holo Light, natomiast dolne jest starszym tematycznym dialogiem. Nie można uzyskać okna dialogowego o tematyce Holo Light w wersjach poniżej Honeycomb. Oto mały fragment, którego używam do wyboru motywu świetlnego na podstawie wersji Androida, na której działa urządzenie.

Obiekt AlertDialog.Builder użyje motywu kontekstu, w którym został przekazany. Możesz użyć ustawienia ContextThemeWrapper.

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

Widzę to na moim telefonie z JB 4.2.2 – Si8

+0

Czy wypróbowałem kod w mojej odpowiedzi? –

+0

Próbowałem, to działa, dziękuję. –

3

Musisz użyć numeru AlertDialog Builder. Dzięki temu możesz ustawić styl w swoim oknie dialogowym. Spójrz na poniższy przykład: 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

Już go używam. Zaktualizuj moje pytanie :) – Si8

+0

Ale musisz ustawić styl jak -> zobacz moją edycję – JavaDM

+0

Spróbuję i zaktualizuję. Dzięki. – Si8

13

można użyć coś takiego podczas tworzenia 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. 

Ten kod utworzy Holo Styled AlertDialog w nowszych wersjach i normalnym urządzeniem opartym AlertDialog na urządzeniach z starsza wersja Androida.

+0

Działa to świetnie. Dzięki. – Mahm00d