paint onMeasure()决定高度宽度

时间:2016-12-21 04:28:08

标签: java android

所有

我在这里遇到了一个奇怪的问题,我需要专家的建议。

我有一个自定义视图,它正在绘制一个点和文本。 现在我的问题是,我不知道它的宽度高度将计入onDraw方法。(当然是动态计算)。那怎么办呢 在这种情况下setMeasuredDimension(parentWidth, parentHeight)。您不知道高度和宽度,它将在onDraw计算取决于文字长度请帮助。

1 个答案:

答案 0 :(得分:-1)

您需要做的就是在onMeasure()中使用[Paint.getTextWidths()](https://developer.android.com/reference/android/graphics/Paint.html#getTextWidths(java.lang.String,float [])。

您将获得所有字符的宽度,因此在循环中只需添加所有宽度

float textWidth = 0;
float [] charsWidth = new float[text.length()];

int widths = mPaint.getTextWidths(text, charsWidth);

for (int i = 0; i < widths; i++) {
    textWidth += charsWidth[i];
}

你有文字的宽度。

不要忘记使用正确的参数初始化Paint对象,尤其是事先的文本大小。

编辑:如果您需要文字宽度和高度,请改用Paint.getTextBounds()