私はAndroidを初めて使用します。
現在、「OK」ボタンと「キャンセル」ボタンのあるAlertDialog
ボックスを表示したいと思います。
デフォルトはPositiveButton:Left、NegativeButton:Rightです。
PositiveButtonを右側に移動し、NegativeButtonを左側に移動する方法を教えてください。
テキスト「OK」をNegativeButtonに、「Cancel」をPositiveButtonに変更した場合、OKを押したときにNegativebuttonが悪い音を出す可能性/問題はありますか?.
私のコード:
AlertDialog.Builder builder = new AlertDialog.Builder(SUtils.getContext());
builder.setMessage("Confirmation?")
.setCancelable(false)
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
//Todo
dialog.cancel();
}
})
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
//TOdo
}
})
dialog = builder.create();
ありがとう、エンジェル
これは直接的な答えではないかもしれません。しかし、関連するトピックに関する情報がいくつかあります。 this Google自身のフォーラムのスレッドから、Romainの男は言った。
今後は、正/負のボタンの順序がICSで使用されるようになります。
oSバージョンごとの規則は
Android/Googleが従うことを望んでいるのが慣例である場合、ユーザーがアプリを単独で使用することはないので、同じに従うほうがよいのではないでしょうか。結局のところ、開発者が最初に探すのは使いやすさです。
AlertDialog.Builder builder = new AlertDialog.Builder(SUtils.getContext());
builder.setMessage("Confirmation?")
.setCancelable(false)
.setNegativeButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
//TOdo
}
})
.setPositiveButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
//TOdo
dialog.cancel();
}
})
diaglog = builder.create();
ただし、順序を変更する正当な理由がない限り、規則に従うことをお勧めします。これにより、ユーザーはアプリケーションを使いやすくなります。
Android)のデフォルト設定を変更する方法はありませんが、これに従って機能的に設定をキャンセルするようにテキストを変更することはできます
AlertDialog.Builder builder = new AlertDialog.Builder(SUtils.getContext());
builder.setMessage("Confirmation?")
.setCancelable(false)
.setNegativeButton("OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
//TOdo
}
})
.setPositiveButton("CANCEL", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
//TOdo
dialog.cancel();
}
});
dialog = builder.create();
これを確認してください https://github.com/hslls/order-alert-buttons
dependencies {
compile 'com.github.hslls:order-alert-buttons:1.0.0'
}
AlertDialogParams params = new AlertDialogParams();
params.mTitle = "title";
params.mMessage = "message";
params.mPositiveText = "Ok";
params.mNegativeText = "Cancel";
params.mCancelable = true;
params.mAlign = BUTTON_ALIGN.POSITIVE_BUTTON_LEFT; // fix button position
params.mClickListener = new AlertDialogClickListener() {
@Override
public void onPositiveClicked() {
}
@Override
public void onNegativeClicked() {
}
};
AlertDialog dialog = AlertDialogBuilder.createAlertDialog(this, params);
neutral button
と-ve/+ve buttons
の間にスペースレイアウトがあり、ボタンがあるbuttonBarLayout
の場所が「1」であることがわかりました。
したがって、最初にそのスペースを削除するか、その可視性をGONE
にする必要があります(invisible
はまだbuttonBarLayout
内のスペースを取ります)また、メソッドを使用することをお勧めしますonShowListnerは、次の方法でダイアログを表示した後にそれを行うよりも優れています。
alertDialog.setOnShowListener(new DialogInterface.OnShowListener() {
@Override
public void onShow(DialogInterface dialog) {
Button neutralButton = alertDialog.getButton(AlertDialog.BUTTON_NEUTRAL);
LinearLayout view = (LinearLayout) neutralButtonOrAnyOtherBtnFromThe3Btns.getParent();
Space space= (Space) view.getChildAt(1);
}
});
残りはあなたのデザインです、それが助けになることを願っています
AlertDialog
のボタンを右側に移動する非常に簡単な方法は、デフォルトのレイアウトを処理するコアXML内のleftSpacer
であるLinearLayout
を非表示にすることです。
// Fetch the PositiveButton
final Button lPositiveButton = lDialog.getButton(AlertDialog.BUTTON_POSITIVE);
// Fetch the LinearLayout.
final LinearLayout lParent = (LinearLayout) lPositiveButton.getParent();
// Ensure the Parent of the Buttons aligns it's contents to the right.
lParent.setGravity(Gravity.RIGHT);
// Hide the LeftSpacer. (Strict dependence on the order of the layout!)
lParent.getChildAt(1).setVisibility(View.GONE);