これを行う理由はまったく別の議論ですが、すべての警告ダイアログの右側に肯定的なボタンを表示する最善の方法を見つける必要があります。バージョン 3.0 以下では、ボタンは通常 OK / キャンセルとして表示され、4.0 以降ではキャンセル / OK として表示されることに注意してください。アプリケーションで Cancel / OK をできるだけ簡単な方法で強制的に使用させたいと考えています。アプリケーションに多くの AlertDialogs があります。
8 に答える
残念ながら、私はあなたができるとは思わない。ただし、ドキュメントを引用するには:
注:AlertDialogに追加できるボタンタイプは1つだけです。つまり、複数の「ポジティブ」ボタンを持つことはできません。これにより、可能なボタンの数がポジティブ、ニュートラル、ネガティブの3つに制限されます。これらの名前は、ボタンの実際の機能とは技術的には無関係ですが、どのボタンが何を実行するかを追跡するのに役立ちます。
したがって、さまざまなボタンを好きなように変えることができます。ここに表示されているのは、順序が切り替わったことです(この回答からの順序)。
- ICSより前のデバイスでは、ボタンの順序(左から右)は正-中立-負でした。
- ICSを使用する新しいデバイスでは、ボタンの順序(左から右)がNEGATIVE-NEUTRAL-POSITIVEになりました。
を確認し、Build.VERSION
それを使用して、実行時にどのボタンがどれであるかを判断してみてください。
肯定的なボタンのテキストをキャンセルに、否定的なボタンをOKに設定するだけでよいと考えましたが、アルファベット順になっていることがわかりました。
任意のデバイスの任意の Android バージョンのボタンの順序を強制するソリューションを作成しました。
アイデアは、画面に表示される順序でダイアログのボタンのリストを取得し、必要な順序でテキストとアクションを設定できるということです。どのデバイスでも同じ順序になることが保証されます。
ダイアログの作成と表示の例を次に示します。
new FixedOrderDialogFragment.Builder()
.setLeftButtonText(R.string.left)
.setCenterButtonText(R.string.center)
.setRightButtonText(R.string.right)
.setDefaultButton(FixedOrderDialogFragment.BUTTON_RIGHT)
.setMessage(R.string.message)
.setTitle(R.string.app_name)
.create()
.show(getSupportFragmentManager(), "DEMO");
所有者アクティビティは、アクティビティの再作成時にダイアログの状態を復元できるように、FixedOrderDialogFragment.FixedOrderDialogListener を実装する必要があることに注意してください。