将字体大小更改为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()); 

问题 :布局是滚动,bute没有“惯性”(不知道怎么称呼,但我想你明白。)

解决方法3)使用滚动查看。

这就是我要去尝试,但我不相信有没有更简单的解决scheme…

Solutions Collecting From Web of "将字体大小更改为AlertDialog"

实际上,您可以非常轻松地访问消息的TextView,然后更改其大小。 我testing了一个更大的尺寸,但是你可以使用任何你想要的尺寸。 文本将很好地滚动,因为它已经。 视图的ID是android.R.id.message:

  AlertDialog dialog = new AlertDialog.Builder(this).setMessage("Hello world").show(); TextView textView = (TextView) dialog.findViewById(android.R.id.message); textView.setTextSize(40); 

这可能是一个更干净的解决scheme,但我不确定是否存在TextView可能为空的风险。

我正在使用以下代码来更改AlertDialog的标题和消息文本…

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

…确保我在我的setTitleFontsetBodyFont方法中检查null

对于button:

  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(); 

这里是我的解决scheme…你需要创build滚动容器,然后像在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);