我正在尝试将 AlertDialog 的正、负和中性按钮设置为可绘制对象而不是文本。
到目前为止,我已经成功地使用了这个:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Are you sure you want to exit?")
.setPositiveButton("Save", new DialogInterface.OnClickListener() {...})
.setNeutralButton("Trash", new DialogInterface.OnClickListener() {...})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {...});
AlertDialog alert = builder.create();
alert.show();
Button button0 = alert.getButton(AlertDialog.BUTTON_POSITIVE);
button0.setCompoundDrawablesWithIntrinsicBounds(this.getResources().getDrawable(R.drawable.ic_menu_save), null, null, null);
button0.setText("");
Button button1 = alert.getButton(AlertDialog.BUTTON_NEUTRAL);
button1.setCompoundDrawablesWithIntrinsicBounds(this.getResources().getDrawable(R.drawable.ic_menu_delete), null, null, null);
button1.setText("");
Button button2 = alert.getButton(AlertDialog.BUTTON_NEGATIVE);
button2.setCompoundDrawablesWithIntrinsicBounds(this.getResources().getDrawable(R.drawable.ic_menu_close_clear_cancel), null, null, null);
button2.setText("");
这是一种解决方法,因为我实际上只是在事后擦除文本。我的问题是,如果不设置某种文本,您似乎无法实例化按钮。
从一开始设置“[blank_space]”会产生相同的结果,图像被推到左边。在同一位置设置 null 或 "" 将绘制没有按钮的 AlertDialog。您可以在这里看到它如何在图片中向左推:
无论如何只能使用图片吗?这比在我的简单情况下尝试处理翻译要好得多。