所有
我在这里遇到了一个奇怪的问题,我需要专家的建议。
我有一个自定义视图,它正在绘制一个点和文本。
现在我的问题是,我不知道它的宽度高度将计入onDraw
方法。(当然是动态计算)。那怎么办呢
在这种情况下setMeasuredDimension(parentWidth, parentHeight)
。您不知道高度和宽度,它将在onDraw
计算取决于文字长度请帮助。
答案 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()。