将字体大小更改为 AlertDialog

我试图把一些 loooong 文本到 AlertDialog。唯一的问题是真正太大的默认字体大小,所以我想让它更小。

我试图把一些 loooong 文本到 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());

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

解决方法 3)使用滚动视图。

这就是我要尝试的,但我不敢相信没有更简单的解决方案...

125

您实际上可以很容易地访问消息的TextView,然后更改其大小。我使用更大的尺寸进行了测试,但是您可以使用所需的任何尺寸。文本将像以前一样很好地滚动。视图的idandroid.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);

这可能是一个更清洁的解决方案,虽然我不知道是否有TextView可能是null的风险。

28

我正在使用以下代码更改 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

7

对于按钮:

  final AlertDialog ad = new AlertDialog.Builder(mainScreen)
.setPositiveButton("OK", null) 
.setNegativeButton("Cancel", null).create();
ad.setOnShowListener(new DialogIntece.OnShowListener() {
                                            @Override
                                            public void onShow(DialogIntece 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

这是我的解决方案...您需要创建滚动容器,然后在 ScrollView 中添加 TextView,就像在 XML 布局中一样。

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

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(621)
在node.js中按名称获取 mongodb集合
上一篇
Steam buy:在SteamAPI/JSON中买卖商品的订单
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(62条)