hereのように、その onCreateDialog メソッドでDialogFragment
を返す拡張クラスを作成しました。
問題は、標準(正)ボタンの高さを上げたいのですが、高さを変更するためにそれを手に入れることができないということです。
の onCreateDialog メソッドで次のことを行うと、AlertDialog
DialogFragment
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);
「...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 が発生します。AlertDialog
を使用しているときに のボタンをカスタマイズする簡単な方法はありますDialogFragment
か?