我嘗試使警報對話框的自定義樣式,將工作acros 2.2到4.2版本。我發現的最佳方法是使用如何自定義所有版本的AlertDialog風格?
AlertDialog.Builder builder = new AlertDialog.Builder(new ContextThemeWrapper(this, R.style.AlertDialogCustom));
但是,它可以從API 11中使用,但不適用於早於此版本的版本。您能否建議以自定義樣式實現警報對話的無痛方式?謝謝。
我嘗試使警報對話框的自定義樣式,將工作acros 2.2到4.2版本。我發現的最佳方法是使用如何自定義所有版本的AlertDialog風格?
AlertDialog.Builder builder = new AlertDialog.Builder(new ContextThemeWrapper(this, R.style.AlertDialogCustom));
但是,它可以從API 11中使用,但不適用於早於此版本的版本。您能否建議以自定義樣式實現警報對話的無痛方式?謝謝。
你可以使用Android的支持 - 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 ...
我不知道無痛的,但在這裏的是,在我的經驗運作方式:
1)創建一個自定義視圖或佈局,並通過builder.setView(視圖)設置你的建設者。 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