当前位置: 首页 > 知识库问答 >
问题:

在Android中创建字体和文本样式与Paint对象

欧渝
2023-03-14

我正在使用android Paint类创建文本。我知道如何设置文本大小和颜色。我想使用Arial作为字体大小和粗体。我如何使用油漆对象来做到这一点。我看了Paint类中的方法,但找不到任何关于我如何做到这一点的东西。

这就是我创建文本样式的方法。

// Defining a paint object
paint = new Paint();
paint.setTextSize(30);
paint.setTextAlign(Paint.Align.LEFT);
paint.setAntiAlias(true);
paint.setColor(Color.WHITE);

下面是我如何在视图上绘制文本。

g.drawString("My Text", 430, 774, paint);

如何使用Paint类创建Arial字体和粗体文本。

共有3个答案

孙化
2023-03-14
private Bitmap getFontBitmap(String text, int color, float fontSizeSP, int typefaceStyle, boolean isCustomFont) {
    Paint paint = new Paint();
    paint.setAntiAlias(true);
    if (isCustomFont) {
        Typeface typeface = Typeface.create(Typeface.createFromAsset(mContext.getAssets(), "fonts/bangla/bensen_handwriting.ttf"), typefaceStyle);
        paint.setTypeface(typeface);
    } else {
        Typeface typeface = Typeface.create(Typeface.DEFAULT, typefaceStyle);
        paint.setTypeface(typeface);
    }
    int fontSizePX = ConvertDptoPx(mContext, fontSizeSP);
    int pad = (fontSizePX / 9);
    paint.setColor(color);
    paint.setTextSize(fontSizePX);

    int textWidth = (int) (paint.measureText(text) + pad * 2);
    int height = (int) (fontSizePX / 0.75);
    Bitmap bitmap = Bitmap.createBitmap(textWidth, height, Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);
    float xOriginal = pad;
    canvas.drawText(text, xOriginal, fontSizePX, paint);
    return bitmap;
}

private int ConvertDptoPx(Context context, float dip) {
    return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dip, context.getResources().getDisplayMetrics());
}

然后打电话

Bitmap bitmap = getFontBitmap("Ahamadullah", color, 22, Typeface.BOLD, true);

或者

Bitmap bitmap = getFontBitmap("Ahamadullah", color, 22, Typeface.NORMAL | Typeface.ITALIC, false);
王经赋
2023-03-14

2020年1月

将你想要使用的字体复制到res/font(例如opensans_regular.ttf、opensans_italic.ttf、opensans_bolditalic.ttf等)注意名称中的大写字母不为“-”!

创建新字体资源文件opensans.xml

<?xml version="1.0" encoding="utf-8"?>
<font-family
     xmlns:app="http://schemas.android.com/apk/res-auto">

    <font
        app:fontStyle="normal"
        app:fontWeight="400"
        app:font="@font/opensans_regular" />

    <font
        app:fontStyle="italic"
        app:fontWeight="400"
        app:font="@font/opensans_italic" />

    <font
        app:fontStyle="normal"
        app:fontWeight="700"
        app:font="@font/opensans_bold" />

    <font
        app:fontStyle="italic"
        app:fontWeight="700"
        app:font="@font/opensans_bolditalic" />

    <font
        app:fontStyle="normal"
        app:fontWeight="200"
        app:font="@font/opensans_light" />

    <font
        app:fontStyle="italic"
        app:fontWeight="200"
        app:font="@font/opensans_lightitalic" />

    <font
        app:fontStyle="normal"
        app:fontWeight="800"
        app:font="@font/opensans_extrabold" />

    <font
        app:fontStyle="italic"
        app:fontWeight="800"
        app:font="@font/opensans_extrabolditalic" />

</font-family>

在你的主要活动中。java可以使用以下代码

    Paint paint = new Paint();
    Typeface typeface;

    if (Build.VERSION.SDK_INT >= 28) {
        // This does only works from SDK 28 and higher
        Typeface typefaceA = ResourcesCompat.getFont(this, R.font.opensans);
        typeface = Typeface.create(typefaceA, 700, false);
    } else {
        // This always works (Whole name without .ttf)
        typeface = ResourcesCompat.getFont(this, R.font.opensans_bolditalic);
    }
    paint.setTypeface(typeface);
鲜于高明
2023-03-14

使用文本绘制类而不是绘制。并可按如下方式实现

TextPaint textPaint = new TextPaint();
textPaint.setTextSize(30);
textPaint.setTextAlign(Paint.Align.LEFT);
textPaint.setColor(Color.WHITE);
textPaint.setTypeface(Typeface.create("Arial", Typeface.BOLD));
 类似资料:
  • Roboto 2.0 Material Design 使用的标准字体是 Roboto。在我们的框架里面包含了很多的字体文件。 框架中已经包含了最新版本的 Roboto 字体。共有5种不同的字体宽度可以用: 200, 300, 400, 500, 600。 一张图带你了解。 移除 Roboto 某些情况下你可能不想用 Roboto 字体。更改字体堆栈就行,例: html { font-famil

  • 强调内容 强调内容 源码 *这里是强调内容* <em> 标签告诉浏览器把其中的文本表示为强调的内容。对于所有浏览器来说,这意味着要把这段文字用斜体来显示。 引用内容 引用内容 源码 `这里是引用内容` <cite> 标签通常表示它所包含的文本对某个参考文献的引用,比如书籍或者杂志的标题。 粗体 粗体 源码 **这里是粗体内容** <strong> 标签和 <em> 标签一样,用于强调文本,但

  • 注意: Adobe Muse 不再添加新增功能,并将于 2020 年 3 月 26 日停止支持。有关详细信息和帮助,请参阅 Adobe Muse 服务结束页面。 Adobe Muse 提供了一种直观的机制来保存和重复使用应用于网页上对象的样式。创建和重复使用样式是在网站的所有页面上实现设计和外观一致性的简单方法。样式还允许您快速更新网站,而无需重新处理颜色、字体、文本格式等。 使用 Muse 中的

  • 我想更改对话框中editetext底线的颜色。我有一个自定义对话框布局,我对每个edittext都使用了这种样式,但它根本不起作用,而且我得到了一条黑色的底线: 这是样式代码: 我对每个编辑文本都使用这种样式。你能帮帮我吗,为什么它不起作用?

  • 在通过WebView显示的超文本标记语言文件中使用Google字体,如果字体样式设置为斜体字,字体不会呈现斜体。 字体权重也是如此。将其设置为粗体,文本呈现正常。 这似乎只适用于这些自定义字体,“系统”字体(如Arial)在设置时呈现粗体和斜体。 我已经使用ADB从设备中提取文件并在本地运行,在Chrome中,它们显示正确,粗体和斜体。

  • 我目前正在为这家公司开发一个应用程序,作为我最后一年的研究项目,在这个应用程序中有一个功能,可以让你打印一张纸,所以我显然使用了jeditorpane,使用了Charles Bell HTMLEditorKit来完成预定义的功能,比如设置字体和打印等等。我必须从一个文本文件中加载预先编写好的文本,然后程序会自动在文件中添加一些文本,如果用户需要的话,也可以添加更多的文本,或者改变字体或样式。 问题