2013-07-15 2 views
2

Раньше я пытался бороться с превращением фона деятельности в прозрачный. Я бы правильно установил фон макета #00000000, и я бы правильно установил getWindow().setBackgroundDrawable(new ColorDrawable(0)) в методе onCreate. Однако, с этими двумя изменениями, я всегда получал бы серовато-черный контейнер, держащий мой макет. Но затем я обнаружил, что мне нужно было отредактировать тег активности в манифесте, чтобы добавить android:theme="@android:style/Theme.Holo.Dialog". Вуаля! Это все.Дайте AlertDialog пользовательский или прозрачный фон

Но теперь мне нужно превратить фон AlertDialog в прозрачный. Есть ряд предложений, и я попробовал немало. Моя последняя конфигурация приведена ниже. Но у меня всегда была та же проблема, с которой я работал: серовато-черный контейнер, держащий мой макет. Итак, теперь мой вопрос: как добавить android:theme="@android:style/Theme.Holo.Dialog" в файл манифеста для моего настраиваемого диалога?

Текущий код:

public void showMyDialog() { 
    ContextThemeWrapper ctw = new ContextThemeWrapper(this, R.style.CustomDialog); 
    AlertDialog.Builder builder = new AlertDialog.Builder(ctw); 
    LayoutInflater inflater = (LayoutInflater) ctw.getSystemService(LAYOUT_INFLATER_SERVICE); 
    View view = inflater.inflate(R.layout.dialog_layout, 
    (ViewGroup) findViewById(R.id.pr_root)); 
    builder.setView(view); 
    builder.show(); 
} 

Стиль:

<style name="CustomDialog" parent="android:Theme.Holo.Dialog"> 
        <item name="android:windowIsTranslucent">true</item> 
        <item name="android:windowBackground">@android:color/transparent</item> 
    </style> 

<!-- Application theme. --> 
    <style name="AppTheme" parent="AppBaseTheme"> 
        <item name="android:alertDialogStyle">@style/CustomDialog</item> 
        <!-- All customizations that are NOT specific to a particular API-level can go here. --> 
    </style> 

Конечно dialog_layout типичный макет .xml файл.

ответ

2

Используйте Dialog вместо AlertDialog.Builder и поэтому используйте setContentView вместо setView.

+0

Так что этот вид работ. Он вытащил серовато-черный фон. Но есть одна проблема. Теперь мой диалог имеет синий/голубой бар наверху. Как удалить эту панель? –

+0

Используйте 'builder.getWindow(). RequestFeature (Window.FEATURE_NO_TITLE);' –

+0

Диалоги не очень хорошо сочетаются с панелью контекстных действий, к сожалению, и смещаются. Мне потребовалось некоторое время, чтобы найти, что Диалог был виновником. – Saket

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