16

XML レイアウトから拡張されたいくつかのカスタム ダイアログを使用する Android アプリがあります。ダイアログのビューの内容は XML レイアウトから取得されますが、実際のポジティブ ボタンとネガティブ ボタンはビルダーの setPositiveButton メソッドと setNegativeButton メソッドを呼び出すことによって追加されるため、スタイリングを制御できません (または少なくとも制御方法がわかりません)。ボタン自体の。

DialogFragment を拡張する LoginConfirmationDialog.java ファイルから以下の onCreateDialog メソッドを参照してください。基本的には、誰がログインしているかの確認を求める非常に単純なダイアログがポップアップ表示されます (つまり、「Are you Joe Schmoe?」、[はい] と [いいえ] ボタンが表示されます)。

この場合の XML レイアウトには TextView が 1 つしかありません。これを簡単にするために (ユーザーは大きなテキストと大きなボタンを必要とする、こぶ状の汚れた大きな指を持つ建設作業員になるため)、TextView のフォントをかなり大きくしました。ただし、2 つのボタンのテキストのフォントははるかに小さく、レイアウトの一部ではなく、setPositiveButton メソッドと setNegativeButton メソッドで追加されるため、フォント サイズを制御するにはどうすればよいでしょうか?

@Override    
public Dialog onCreateDialog(Bundle savedInstanceState) {

    Bundle args = this.getArguments();

    String empName = args.getString("empName");         

    // Use the Builder class for convenient dialog construction        
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 

    View view = getActivity().getLayoutInflater().inflate(R.layout.dialog_login_confirmation, null);

    TextView message = (TextView)view.findViewById(R.id.txtLoginConfirmationMessage);
    message.setText("Are you " + empName + "?");

    builder.setView(view);      

    builder.setPositiveButton("Yes", 
            new DialogInterface.OnClickListener() {                   
                public void onClick(DialogInterface dialog, int id) {
                    mListener.onEmpConfirmPositiveClick(LoginConfirmationDialog.this);
                }               
            });               
    builder.setNegativeButton("No", 
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    mListener.onEmpConfirmNegativeClick(LoginConfirmationDialog.this);
                }
            });  

    // Create the AlertDialog object and return it        
    return builder.create();    
}
4

7 に答える 7

38

を返す代わりにbuilder.create()、これを試してください.-

final AlertDialog alert = builder.create();
alert.setOnShowListener(new DialogInterface.OnShowListener() {
    @Override
    public void onShow(DialogInterface dialog) {
        Button btnPositive = alert.getButton(Dialog.BUTTON_POSITIVE);
        btnPositive.setTextSize(TEXT_SIZE);

        Button btnNegative = alert.getButton(Dialog.BUTTON_NEGATIVE);
        btnNegative.setTextSize(TEXT_SIZE);
    }
});

return alert;
于 2013-04-09T18:52:05.910 に答える
2

次の回答を確認してください。

Dialog.java (Android src) では、ContextThemeWrapper が使用されます。アイデアをコピーして何かをすることができます

次のコード行を変更するだけです。

<item name="android:textSize">10sp</item>ご希望のサイズに。

また、回答のコメントも確認することを忘れないでください。

幸運を祈ります。

于 2013-04-09T18:54:07.773 に答える