android - 为警报对话框项设置自定义字体的字体

标签 android android-alertdialog

我正在以这种方式创建一个警告对话框:

AlertDialog.Builder alertDialog = new AlertDialog.Builder(view.getContext());
alertDialog.setCustomTitle(null);
alertDialog.setItems(getAllListNames(), new DialogInterface.OnClickListener() {
  @Override
  public void onClick(DialogInterface dialogInterface, int i) {
      //Doing something awesome...
  }
});

我知道它用我的项目创建了一个 ListView ,我想为它们设置一个带有自定义字体的字体,并为每个列表项目设置最大字符数,我该怎么做?

最佳答案

您必须创建一个自定义主题。这是官方指南:http://developer.android.com/guide/topics/ui/themes.html :)

像这样(在 style.xml 文件中):

<style name="CustomFontTheme" parent="android:Theme.Light">
    <item name="android:textViewStyle">@style/MyTextViewStyle</item>
    <item name="android:buttonStyle">@style/MyButtonStyle</item>
</style>

<style name="MyTextViewStyle" parent="android:Widget.TextView">
    <item name="android:fontFamily">sans-serif-light</item>
</style>

<style name="MyButtonStyle" parent="android:Widget.Holo.Button">
    <item name="android:fontFamily">sans-serif-light</item>
</style>

然后当您创建对话框时,您可以这样做:

Context context = new ContextThemeWrapper(view.getContext(), R.style.CustomFontTheme)
AlertDialog.Builder alertDialog = new AlertDialog.Builder(context);

R.style.CustomFontTheme 是您创建的字体的 ID。


更新:

好的,要添加您的自定义字体,您可以遵循以下要点: https://gist.github.com/artem-zinnatullin/7749076

关键是在应用程序启动时覆盖给定的字体,如下所示:

TypefaceUtil.overrideFont(getApplicationContext(), "AWESOME-FONT", "fonts/Awesome-Font.ttf");

要点具有该方法的实现。

所以主题样式现在应该是这样的:

<style name="MyTextViewStyle" parent="android:Widget.TextView">
    <item name="android:fontFamily">awesome-font</item>
</style>

<style name="MyButtonStyle" parent="android:Widget.Holo.Button">
    <item name="android:fontFamily">awesome-font</item>
</style>

关于android - 为警报对话框项设置自定义字体的字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28303811/

相关文章:

安卓3D效果图库

Android - 在 ProgressDialog 完成后立即显示 AlertDialog/Toast

android - 管理多种口味……呈指数级增长?

java - 加载时删除 webview 加载器

java - Android:在某些情况下禁用 AlertDialogBu​​ilder 的“确定”按钮

android - Activity 暂停并重新创建后,如何停止 Activity 附加的 AlertDialog 继续出现在 Activity 上?

android - 如何在 AlertDialog 框中添加两个编辑文本字段或 View ?

android - 使用布局参数限制 AlertDialog 中 EditText 的宽度?

android - 启动然后销毁前台服务不会停止 VS 调试器

android - 软件更新 macOS Mojave 后 ADB 不工作