Изменение цвета фона DialogFragment по умолчанию — Android

Я реализовал свой собственный диалог, унаследовав его от класса DialogFragment.

Я хочу изменить цвет фона этого диалогового окна по умолчанию.

Я пробовал пару способов, но ни один из них не работает. Если вы видите метод onCreateDialog() ниже, я использую собственный стиль диалогового окна:

public class ConfirmationDialogFragment extends SherlockDialogFragment {

String mTextMessage = "Would you like to save the message"; 
String mTextButtonOk = "Ok";
TestDialogInterface dialogInterface = null;

public void setDialogInterface(TestDialogInterface dialogInterface) {
    this.dialogInterface = dialogInterface;
}

/**
 */
public ConfirmationDialogFragment() {       
}

public void setTextMessage(String mTextMessage) {
    this.mTextMessage = mTextMessage;
}


@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    AlertDialog.Builder builder = new AlertDialog.Builder(new ContextThemeWrapper(getActivity(), R.style.AlertDialogCustom));
    builder.setMessage(mTextMessage)
           .setPositiveButton(mTextButtonOk, new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int id) {
                   dismiss();
               }
           })
           .setCancelable(false);                
    builder.setTitle("Loan Extension");
    Dialog dialog = builder.create();
    return dialog;
}   

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View view = super.onCreateView(inflater, container, savedInstanceState);
    return view;        
}

public class TestDialogInterface{
    public void onYes(){}
    public void onNo(){}        
}    

}

И файл стилей выглядит так:

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <style name="AlertDialogCustom" parent="@android:style/Theme.DeviceDefault.Light.Dialog">        
        <item name="android:windowBackground">@color/red</item>
        <item name="android:colorBackground">@color/red</item>                              
    </style>
</resources>

Однако элемент стиля windowBackground, похоже, не имеет никакого эффекта. Мне нужно изменить цвет фона этого диалогового окна по умолчанию.

Есть у кого инфа????


person revolutionary    schedule 28.11.2012    source источник


Ответы (3)


Я предлагаю вам создать собственный диалог. за помощью

http://developer.android.com/guide/topics/ui/dialogs.html#CustomDialog

or

http://www.androidpeople.com/android-custom-dialog-example

person srinu    schedule 28.11.2012
comment
Спасибо, но это не то, что я ищу в идеале. Есть ли что-то еще, потому что мне нужно только изменить цвет. - person revolutionary; 28.11.2012

Измените цвет фона корневого представления, линейного макета или чего-либо еще.

person Arunavh Krishnan    schedule 16.11.2014

меня устраивает:

   @Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    // Setup the layout
    LayoutInflater inflater = getActivity().getLayoutInflater();
    final View root = inflater.inflate(R.layout.sample_dialog_fragment, null);
    root.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));

    //Customizing the dialog features
    final Dialog dialog = new Dialog(getActivity());
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
    dialog.setContentView(root);
    dialog.getWindow().setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.light_gray)));
    dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
    return dialog;
}

просто замените sample_dialog_fragment на свой макет, а также R.color.light_gray на свой цвет. Я надеюсь, что это поможет вам.

person KeyOne    schedule 11.04.2016