2013-09-04 3 views
7

я использовал следующую строку в моем манифесте:Show Light AlertDialog с помощью Theme.Light.NoTitleBar

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

не иметь строки заголовка и отобразить облегченную версию AlertDialog в моем приложении, как в примере: enter image description here

Но он показывает в темной темы еще:

enter image description here

My Dialog Java сотрудничества 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(); 

Как сохранить подсветку темы для AlertDialog?

ответ

26

В верхнем диалоговом окне вашего сообщения отображается диалоговое окно с голосом, а нижнее - более старое диалоговое окно. Вы не можете получить тематический диалог Holo Light на версиях ниже Honeycomb. Вот небольшой фрагмент, который я использую, чтобы выбрать легкую тему, основанную на той версии Android, на которой работает устройство.

AlertDialog.Builder будет использовать тему контекста, который он передал. Вы можете использовать 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

Я вижу, что на моем телефоне работает JB 4.2.2 – Si8

+0

Пробовал ли код в моем ответе? –

+0

Я пробовал, он работает, спасибо. –

3

Вы должны использовать AlertDialog Builder. С его помощью вы можете установить стиль для своего диалога. Посмотрите на следующий пример: 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

Я его уже использую. Обновите мой вопрос :) – Si8

+0

Но вы должны установить стиль как -> см. Мое редактирование – JavaDM

+0

Я дам ему попробовать и обновить вас. Благодарю. – Si8

13

Вы можете использовать что-то вроде этого, при создании вашего 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. 

Этот код будет создавать Холо Styled AlertDialog в новых версиях и нормального устройства на основе AlertDialog на устройствах с более старая версия Android.

+0

Это отлично работает. Благодарю. – Mahm00d

Смежные вопросы