2015-04-07 11 views
0

Я хочу изменить Мои AlertDialog цвет фонаКак установить цвет фона AlertDialog

с, используя пользовательский диалог

я попытался установить тему AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.appContext,r.style.my.Theme);, но его не изменяя фон цвет.

+0

Проверьте, Добавление вытяжки в качестве фона работает. builder.getWindow().setBackgroundDrawableResource (R.drawable.menubackground); –

ответ

0

Создать новый файл Android XML ресурсов в рамках рес/значений/

Вы хотите создать новый стиль, который наследуется от темы по умолчанию alertdialog:

<style name="CustomDialogTheme" parent="@android:style/Theme.Dialog"> 
    <item name="android:bottomBright">@color/white</item> 
    <item name="android:bottomDark">@color/white</item> 
    <item name="android:bottomMedium">@color/white</item> 
    <item name="android:centerBright">@color/white</item> 
    <item name="android:centerDark">@color/white</item> 
    <item name="android:centerMedium">@color/white</item> 
    <item name="android:fullBright">@color/orange</item> 
    <item name="android:fullDark">@color/orange</item> 
    <item name="android:topBright">@color/blue</item> 
    <item name="android:topDark">@color/blue</item> 
</style> 

Вы можете указать либо цвета или для каждого раздела AlertDialog. AlertDialog построит его дисплей, объединив 3 ярлыка/цвета (сверху, в центре, снизу) или один яркий/цветный (полный).

В теме вашего собственного переопределения андроида: alertDialogStyle стиль (вы можете сделать это в том же файле XML):

<style name="MyTheme"> 
    <item name="android:alertDialogStyle">@style/CustomDialogTheme</item> 
</style> 

Override тему вашего приложения в AndroidManifest в теге приложения:

<application 
    android:icon="@drawable/icon" 
    android:label="@string/app_name" 
    android:theme="@style/MyTheme"> 

Теперь, когда вы определили тему своего приложения, любые атрибуты, переопределенные в вашей теме, будут резонировать во всем приложении. Например, если вы хотите изменить цвет заголовка вашего приложения: Вы бы сначала определить новый стиль, который наследуется от атрибута по умолчанию

<style name="MyBackground" parent="android:WindowTitleBackground">  
    <item name="android:background">@color/blue</item> 
</style> 

и просто добавить новый перекрытый пункт к вашей теме:

<style name="MyTheme"> 
    <item name="android:windowTitleBackgroundStyle">@style/MyBackground</item> 
    <item name="android:alertDialogStyle">@style/CustomDialogTheme</item> 
</style> 
0

Вы пытались изменить цвет фона диалогового окна отверстия?

Не проверено, только просмотрено API Ref.

AlertDialog расширяет Dialog.

В диалоге является метод:

getWindow() 

Окно http://developer.android.com/reference/android/view/Window.html Ссылка показывает метод:

setBackgroundDrawable (Drawable drawable) 
and 
setBackgroundDrawableResource (int resId) 

могли бы работать.

+0

Это меняет весь цвет окна. Я хочу изменить часть диалога оповещения не на весь экран. –

+0

OK;) Была попытка –

0
AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setTitle("Title") 
     .setCancelable(false) 
     .setPositiveButton("Go", new DialogInterface.OnClickListener() { 

     @Override 
     public void onClick(DialogInterface dialog, int id) { 
      EditText textBox = (EditText) findViewById(R.id.textbox); 
      doStuff(); 
     } 
    }); 

    FrameLayout f1 = (FrameLayout)findViewById(R.id.body /*CURRENTLY an ERROR*/); 
    f1.addView(findViewById(R.layout.dialog_view)); 


    LayoutInflater inflater = getLayoutInflater(); 
    FrameLayout f1 = (FrameLayout)alert.findViewById(android.R.id.body); 
    f1.addView(inflater.inflate(R.layout.dialog_view, f1, false)); 

AlertDialog alert = builder.create(); 
    alert.show(); 

Этот код будет установлен ваш диалог в файл пользовательского макета под названием dialog_view оттуда вы можете делать все, что вы хотите этот пользовательский макет.

Вы хотите установить фон в этом пользовательском макете так в макете установить фон на корневой объекте макета

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:id="@+id/dialog_layout_root" 
       android:orientation="vertical" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:padding="10dp" 
       android:background="#000000" 
       /> 
Смежные вопросы