web-dev-qa-db-ja.com

フォントサイズをAlertDialogに変更する

AlertDialogにいくつかの長いテキストを入れようとしています。唯一の問題は、実際には大きすぎるデフォルトのフォントサイズなので、小さくしたいと思います。

ここに、私が試したすべての回避策とその問題を示します。

回避策1) TextViewとmyView.setTextSize(12)を使用します。

final TextView myView = new TextView(getApplicationContext());
myView.setText(myLongText);
myView.setTextSize(12);
final AlertDialog d = new AlertDialog.Builder(context)
    .setPositiveButton(Android.R.string.ok, null)
.setTitle(myTitle)
.setView(myView)
.create();

問題:レイアウトがスクロールしない

回避策2) TextViewをスクロール可能にします。

message.setMovementMethod(LinkMovementMethod.getInstance());

Issues:レイアウトはスクロールしますが、「慣性」はありません(それを呼び出す方法がわかりません。しかし、あなたは理解していると思います。)

回避策3) Scrollviewを使用します。

それは私がしようとしているものですが、私は簡単な解決策がないとは信じられません...

35
Waza_Be

次のコードを使用して、AlertDialogのタイトルとメッセージテキストを変更しています…

final int alertTitle = ctx.getResources().getIdentifier("alertTitle", "id", "Android");
setTitleFont((TextView) dlg.findViewById(alertTitle));
setBodyFont((TextView) dlg.findViewById(Android.R.id.message));

nullメソッドとsetTitleFontメソッドでsetBodyFontをチェックしていることを確認します。

25
Sileria

ボタンの場合:

  final AlertDialog ad = new AlertDialog.Builder(mainScreen)
.setPositiveButton("OK", null) 
.setNegativeButton("Cancel", null).create();

ad.setOnShowListener(new DialogInterface.OnShowListener() {
                                            @Override
                                            public void onShow(DialogInterface dialog) {
                                                int textSize = (int) Helper.getDimen(mainScreen, R.dimen.textSize12);
                                                ad.getButton(Dialog.BUTTON_POSITIVE).setTextSize(textSize);
                                                ad.getButton(Dialog.BUTTON_NEGATIVE).setTextSize(textSize);
                                            }


                                      });

ad.show();
5
M. Usman Khan

これが私の解決策です...スクロールコンテナを作成し、XMLレイアウトの場合と同じようにScrollView内にTextViewを追加する必要があります。

AlertDialog alertDialog = new AlertDialog.Builder(this).create();
String str = getString(R.string.upgrade_notes); 
final ScrollView s_view = new ScrollView(getApplicationContext());
final TextView t_view = new TextView(getApplicationContext());
t_view.setText(str);
t_view.setTextSize(14);     
s_view.addView(t_view);
alertDialog.setTitle("Upgrade notes!");
alertDialog.setView(s_view);
4
kenyu73

文字列の代わりにSpannableStringBuilderを使用して、この問題を解決できます。

http://www.Android--tutorials.com/2016/10/Android-change-alertdialog-title-text_21.html

0
sean