我創建了一個擴展DialogFragment
的類,它在onCreateDialog方法中返回一個AlertDialog
,如here。
問題是,我想增加標準(正)按鈕的高度,但我無法控制它來改變它的高度。
當我做在的DialogFragment
Android 3.2 - 在DialogFragment中自定義AlertDialog按鈕
mAlertDialog = new AlertDialog.Builder(getActivity())
.setView(messageView)
.setCustomTitle(titleView)
.setPositiveButton(R.string.dialog_button,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
((ContextSwapUserInterface) getActivity()).instructionsAccepted();
}
}
)
.create();
mAlertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setHeight(60);
我得到一個例外,它說的onCreateDialog方法如下「......無法實例ComponentInfo ......」
我猜這是因爲按鈕在這個時間點沒有正確實例化。
於是,我讓我的主要活動按鈕,我創建了DialogFragment
並把它稱爲是.show方法之後:
// Create and show a new InstructionsDialogFragment
DialogFragment instructionsDialogFragment = InstructionsDialogFragment.newInstance(mInstructions);
instructionsDialogFragment.show(getFragmentManager(), "Instructions Dialog");
((Button) instructionsDialogFragment.getDialog().findViewById(android.R.id.button1)).setHeight(60);
我也試過以下,而不是最後一行上面:
((AlertDialog) instructionsDialogFragment.getDialog()).getButton(AlertDialog.BUTTON_POSITIVE).setHeight(60);
這兩個版本都會導致NullPointerException。在使用DialogFragment
時,有沒有簡單的方法可以自定義AlertDialog
的按鈕?
我在onResume()方法中試過它,它工作,雖然你的建議可能也適用。不幸的是,我沒有時間去測試它。坦克反正 – Schnodahipfe