Android 如何在不显示文字时获取文字宽度

Android 如何在不显示文字时获取文字宽度,第1张

概述Android如何在不显示文字时获取文字宽度正确方式:在canvas中使用:paint.measureText(text)在TextView中使用:textView.getPaint()..measureText(text)代码示例:packagecom.demo.myapplication3;importandroid.graphics.Bitmap;importandroid.graphics.Canvas;import AndroID 如何在不显示文字时获取文字宽度

正确方式:

在canvas中使用:paint.measureText(text)
在TextVIEw中使用:textVIEw.getPaint()..measureText(text)

代码示例:

package com.demo.myapplication3;import androID.graphics.Bitmap;import androID.graphics.Canvas;import androID.graphics.Paint;import androID.graphics.Rect;import androID.support.v7.app.AppCompatActivity;import androID.os.Bundle;import androID.text.TextPaint;import androID.util.Log;import androID.util.TypedValue;import androID.vIEw.VIEw;import androID.Widget.TextVIEw;public class MainActivity extends AppCompatActivity {    private final String TAG = "MainActivity";    @OverrIDe    protected voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentVIEw(R.layout.activity_main);        canvasMeasure();        textVIEwMeasure();    }    private voID canvasMeasure() {        String text = "测试:XYZ xyz";        Bitmap bitmap = Bitmap.createBitmap(800, 1000, Bitmap.Config.ARGB_8888);        Canvas canvas = new Canvas(bitmap);        canvas.drawBitmap(bitmap, 0, 0, null);        Paint paint = new Paint();        paint.setTextSize(30);        canvas.drawText(text, 100, 100, paint);        //1. 粗略计算文字宽度        Log.d(TAG, "measureText=" + paint.measureText(text));        //2. 计算文字所在矩形,可以得到宽高        Rect rect = new Rect();        paint.getTextBounds(text, 0, text.length(), rect);        int w = rect.wIDth();        int h = rect.height();        Log.d(TAG, "w=" + w + "  h=" + h);        //3. 精确计算文字宽度        int textWIDth = getTextWIDth(paint, text);        Log.d(TAG, "textWIDth=" + textWIDth);    }    private static int getTextWIDth(Paint paint, String str) {        int iRet = 0;        if (str != null && str.length() > 0) {            int len = str.length();            float[] wIDths = new float[len];            paint.getTextWIDths(str, wIDths);            for (int j = 0; j < len; j++) {                iRet += (int) Math.ceil(wIDths[j]);            }        }        return iRet;    }    private voID textVIEwMeasure() {        String text = "测试:XYZ xyz";        TextVIEw textVIEw = findVIEwByID(R.ID.tv_test);        textVIEw.setTextSize(TypedValue.COMPLEX_UNIT_PX, 30);        textVIEw.setText(text);        int spec = VIEw.MeasureSpec.makeMeasureSpec(0, VIEw.MeasureSpec.UnspecIFIED);        textVIEw.measure(spec, spec);        // getMeasureDWIDth        int measureDWIDth = textVIEw.getMeasureDWIDth();        // new textpaint measureText        TextPaint newPaint = new TextPaint();        newPaint.setTextSize(30);        float newPaintWIDth = newPaint.measureText(text);        // textVIEw getPaint measureText        TextPaint textPaint = textVIEw.getPaint();        float textPaintWIDth = textPaint.measureText(text);        Log.e(TAG, "测试字符串:" + text);        Log.e(TAG, "getMeasureDWIDth:" + measureDWIDth);        Log.e(TAG, "newPaint measureText:" + newPaintWIDth);        Log.e(TAG, "textVIEw getPaint measureText:" + textPaintWIDth);    }    //    print    //2021-04-11 12:51:50.428 15976-15976/com.demo.myapplication3 D/MainActivity: measureText=202.0    //2021-04-11 12:51:50.429 15976-15976/com.demo.myapplication3 D/MainActivity: w=200  h=30    //2021-04-11 12:51:50.429 15976-15976/com.demo.myapplication3 D/MainActivity: textWIDth=202    //2021-04-11 12:51:50.430 15976-15976/com.demo.myapplication3 E/MainActivity: 测试字符串:测试:XYZ xyz    //2021-04-11 12:51:50.430 15976-15976/com.demo.myapplication3 E/MainActivity: getMeasureDWIDth:202    //2021-04-11 12:51:50.430 15976-15976/com.demo.myapplication3 E/MainActivity: newPaint measureText:202.0    //2021-04-11 12:51:50.430 15976-15976/com.demo.myapplication3 E/MainActivity: textVIEw getPaint measureText:202.0}
总结

以上是内存溢出为你收集整理的Android 如何在不显示文字时获取文字宽度全部内容,希望文章能够帮你解决Android 如何在不显示文字时获取文字宽度所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1024508.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存