【问题标题】:alert Dialog how can I change the font?警报对话框如何更改字体?
【发布时间】:2025-11-27 17:10:01
【问题描述】:

我需要将字体更改为我的alertDialog(资产文件夹中存在自定义字体),在对话框中我有按钮(正面和负面)以及要检查的项目,如何将字体更改为所有元素我的对话? 我在代码中创建对话框,它不是带有 xml 的自定义对话框;

谢谢!

【问题讨论】:

    标签: java android


    【解决方案1】:

    要更改您的对话框系统,可以使用以下代码。您使用警报构建器来构建警报。然后,您从此警报中获取 TextView 和 EditView,然后设置警报的字体。

        AlertDialog dialog = new AlertDialog.Builder(this).setMessage("Hello").setTitle("Title Alert").show();
        TextView textView = (TextView) dialog.findViewById(android.R.id.message);
        Typeface face= Typeface.createFromAsset(getAssets(), "segoe.ttf");
        int titleId = getResources().getIdentifier("alertTitle", "id", "android"); if (titleId > 0) {
            TextView dialogTitle = (TextView) dialog.findViewById(titleId);
            if (dialogTitle != null) {
                dialogTitle.setTypeface(face);
            }
        }
        textView.setTypeface(face);
    

    【讨论】:

    • 我试过这种方式,但它不起作用,我有项目和按钮的对话框,你的回答是关于只有文本的简单对话框,你有更多的想法吗?
    • 是的,请详细说明您的问题。
    • 我有 alertDialog 项目,用户可以检查其中一个,我将 OnClick 函数连接到它们,我需要将字体更改为我的对话框,在 assets 文件夹中我放置了自定义字体,现在我正在寻找一种简单的方法来将自定义字体(XXX.ttf)连接到我的对话框,并将字体更改为此对话框中的所有视图,而不仅仅是标题,谢谢!
    • 你测试这段代码int titleId = getResources().getIdentifier( "alertTitle", "id", "android" ); if (titleId > 0) { TextView dialogTitle = (TextView) dialogObject.findViewById(titleId); if (dialogTitle != null) { } }
    • 这段代码放在哪里?创建对话框后?像这样:builder.show(); int titleId = getResources().getIdentifier("alertTitle", "id", "android"); if (titleId > 0) { TextView dialogTitle = (TextView) dialog.findViewById(titleId); if (dialogTitle != null) { } }
    【解决方案2】:
    1. 您应该使用 dialogfragment 来实现这一点,创建一个您想要显示的设计
    public class ApproveDialog extends DialogFragment {
    @Nullable @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
    {
    View v = inflater.inflate(R.layout.custom_dialog, container, false);
    TextView styleText=(TextView)v.findViewById(R.id.styleText);
    Typdface tf=Typeface.createFromAsset(getResources().getAssets(),"abc.ttf");
    styleText.setTypeface(tf);
    return v;
    }
    }
    
    1. 调用片段使用
    FragmentTransaction ft=getActivity().getSupportFragmentManager().beginTransaction();
    Fragment prev = getActivity().getSupportFragmentManager().findFragmentByTag("dialog1");
                    if (prev != null)
                        ft.remove(prev);
                    ft.addToBackStack(null);
                    // Create and show the dialog.
                    ApproveDialog newFragment = new ApproveDialog();
                    newFragment.show(ft, "dialog");
    
    1. custom_dialog.xml

    <TextView id="@+id/styleText">

    【讨论】:

    • 感谢您的回答,能否在对话框的项目中添加xml代码?
    • 第2步没看懂,需要放在哪里?在片段活动中?
    • 行 getActivity().getSupportFragmentManager().beginTransaction() 没有编译给我...在哪里创建对话框?
    • 1) 你应该使用 AppCompatActivity 活动而不是 Activity 或 FragmentActivity(getSupportFragmentManager 可用) 2) 布局是你用来在活动中创建的常见布局设计
    • 您可以通过这篇文章了解更多信息android-developers.blogspot.in/2012/05/…