Промяна на цвета на фона по подразбиране на 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>

Обаче прозорецът Background style-item изглежда няма ефект. Трябва да сменя цвета на фона на този диалогов прозорец по подразбиране.

Някой има ли представа????


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