私がやっていること:カスタムアラートダイアログを作成しています
私がやろうとしていること:および以下のコード、ダイアログのアクションボタンの色を変更する方法(正と負)
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
// Get the layout inflater
LayoutInflater inflater = getActivity().getLayoutInflater();
// Inflate and set the layout for the dialog
// Pass null as the parent view because its going in the dialog layout
builder.setView(inflater.inflate(R.layout.dialog_signin, null))
// Add action buttons
.setPositiveButton(R.string.signin, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
// sign in the user ...
}
})
.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
LoginDialogFragment.this.getDialog().cancel();
}
});
return builder.create();
このようにできます
public void createDialog(final Context context) {
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setMessage("Do you want to exit from app");
builder.setCancelable(false);
builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(context, "You exit from app",
Toast.LENGTH_LONG).show();
}
});
AlertDialog alert = builder.create();
alert.show();
Button nbutton = alert.getButton(DialogInterface.BUTTON_NEGATIVE);
nbutton.setBackgroundColor(Color.Magenta);
Button pbutton = alert.getButton(DialogInterface.BUTTON_POSITIVE);
pbutton.setBackgroundColor(Color.YELLOW);
}
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(),R.style.DialogeTheme);
<style name="DialogeTheme" parent="Theme.AppCompat.Dialog.Alert">
<item name="Android:background">@color/all_item_bg</item>
<item name="colorAccent">@Android:color/white</item>
</style>
onStartメソッドを上書きして、すべてのボタン(正、負、中立)のハンドルを取得できます。
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
View eventEditDialogView = View.inflate(this.getActivity(), R.layout.event_edit_dialog,
null);
builder.setTitle(getLocalizedString("edit_event"))
.setView(eventEditDialogView)
.setPositiveButton(getLocalizedString("all_events"), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
}
})
.setNegativeButton(getLocalizedString("this_event"), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
}
})
return builder.create();
}
@Override
public void onStart() {
super.onStart();
Button positive = ((AlertDialog) getDialog()).getButton(AlertDialog.BUTTON_POSITIVE);
positive.setTextColor(Color.BLACK);
positive.setBackgroundColor(getResources().getColor(R.color.GrayBGColor));
}
//***The simpliest solution is:***
dialog.show(); //Only after .show() was called
dialog.getButton(dialog.BUTTON_NEGATIVE).setTextColor(neededColor);
dialog.getButton(dialog.BUTTON_POSITIVE).setTextColor(neededColor);
AlertDialogのsetOnShowListenerメソッドを使用してボタンを取得し、異なる色と独自のリスナーを適用できます。ここにKotlinの例があります。
val alert : AlertDialog?
val alertView = LayoutInflater.from(context).inflate(R.layout.alert_add_product, null, false)
val builder = AlertDialog.Builder(context)
builder.setCancelable(false)
builder.setView(alertView)
/**Create positive and negative buttons**/
builder.setPositiveButton(Android.R.string.ok, null)
builder.setNegativeButton(Android.R.string.cancel, null)
alert = builder.create()
/**Listener called when the AlertDialog is shown**/
alert.setOnShowListener {
/**Get the positive button from the AlertDialog**/
val positiveButton = alert.getButton(DialogInterface.BUTTON_POSITIVE)
/**Set your color to the positive button**/
positiveButton.setTextColor(ContextCompat.getColor(context, R.color.bluePrimaryDark))
/**Set listener to the positive button**/
positiveButton.setOnClickListener({
alert.dismiss()
})
/**Get the negative button from the AlertDialog**/
val negativeButton = alert.getButton(DialogInterface.BUTTON_NEGATIVE)
/**Set your color to the negative button**/
negativeButton.setTextColor(ContextCompat.getColor(context, R.color.bluePrimaryDark))
/**Set listener to the negative button**/
negativeButton.setOnClickListener {
alert?.dismiss()
}
}
alert.show()