我尝试为警报对话框制作自定义样式,该样式将适用于2.2到4.2版本的acros。我发现的最佳方法是使用
AlertDialog.Builder builder = new AlertDialog.Builder(new ContextThemeWrapper(this, R.style.AlertDialogCustom));
然而,API 11中提供的版本不适用于早于此版本的版本。您能否建议使用自定义样式实现警报对话框的无痛方法?感谢。
答案 0 :(得分:0)
我不知道无痛,但这是一种符合我经验的方式:
1)创建自定义视图或布局,并通过builder.setView(view)在构建器上进行设置。
2)如果你有AlertDialog按钮 - 那些不是自定义视图的一部分,它们会为DialogInterface.OnClickListener而不是View.OnClickListener激活事件。因此,如果您需要设置样式,则必须在创建实际警报时动态执行此操作:
alert = builder.create();
alert.setOnShowListener(new DialogInterface.OnShowListener()
{
@Override
public void onShow(DialogInterface dialog)
{
Button btnPositive = alert.getButton(Dialog.BUTTON_POSITIVE);
// set custom stuff for your positive button
Button btnNegative = alert.getButton(Dialog.BUTTON_NEGATIVE);
// set custom stuff for your negative button
}
});
这不是最优雅的解决方案,但到目前为止,我还没有找到任何其他适用于最低API等级8的解决方案。
答案 1 :(得分:0)
你可以使用android-support-v4.jar(你可以从here了解这个库)
将此库添加到libs文件夹中,并将其添加到构建路径
现在,为了创建对话框,
现在转换将您的活动扩展FragmentActivity(它不需要任何东西,它只是活动的子类)
现在你必须在你的活动中创建一个静态,如:
public static class ReportNameFragment extends DialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(R.string.enter_report_name);
LayoutInflater inflater = getActivity().getLayoutInflater();
View view = inflater.inflate(R.layout.enter_report_dialog, null);
final EditText reportName = (EditText) view
.findViewById(R.id.report_name);
builder.setView(view)
// Add action buttons
.setPositiveButton(R.string.save,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int id) {
//Positive Button task
}
})
.setNegativeButton(R.string.cancel,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int id) {
ReportNameFragment.this.getDialog()
.cancel();
}
});
return builder.create();
}
}
通过编写以下内容从活动的任何位置调用此对话框:
DialogFragment reportNameFragment = new ReportNameFragment();
reportNameFragment.show(getSupportFragmentManager(),
"reportNameTypePicker");
如果您想了解有关对话框的更多信息,可以转到here ...