如何让我的AlertDialog以等宽字体显示其文本?

时间:2015-05-23 21:20:42

标签: java android android-alertdialog android-fonts

我在这里显示AlertDialog

  public void showCenteredInfoDialog(TextView _title, TextView _message)  {
    _title.setGravity(Gravity.CENTER);
    this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setPositiveButton("OK", null);
    builder.setCustomTitle(_title);
    builder.setMessage(_message.getText());
    AlertDialog dialog= builder.show();

    TextView messageView = (TextView) dialog.findViewById(android.R.id.message);
    messageView.setGravity(Gravity.CENTER);
  }

我希望字体为monospace

我是否需要修改xml文件,或者只有Java可以处理这个?(如果Java CAN处理它,它可能需要API 21,是吗?)

我想知道是否可以通过某种方式添加messageView.setFontFeatureSettings("...");messageView.setTypeface(...)来引用monospace。我找不到setFontFeatureSettings的字符串参数的语法。

2 个答案:

答案 0 :(得分:4)

这应该适用于您的问题。将它添加到TextView部分:

TextView messageView = (TextView) dialog.findViewById(android.R.id.message);
messageView.setTypeface(Typeface.MONOSPACE);
messageView.setGravity(Gravity.CENTER);

也可以更改XML中的字体,但我认为这更加舒适。

希望这会对你有所帮助! :)

答案 1 :(得分:2)

这里有一个很好的看看@rpfc为我做的(并且它不需要API 21):

使用AlertDialog字体TextView _title和_message显示MONOSPACE的方法:

public void showCenteredInfoDialog(TextView _title, TextView _message)  {

  _title.setGravity(Gravity.CENTER);

  this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

  AlertDialog.Builder builder = new AlertDialog.Builder(this)
                                               .setPositiveButton("OK", null)
                                               .setCustomTitle(_title)
                                               .setMessage(_message.getText());

  AlertDialog                        dialog= builder.show();
  TextView  messageView = (TextView) dialog.findViewById(android.R.id.message);
            messageView.setTypeface(Typeface.MONOSPACE);
            messageView.setGravity(Gravity.CENTER);
}