如何在Android中获取文本字符串(带有属性)的边界?
在参考资料中给定一个字符串,如何获取它的边框 对于纯文本,我可以使用Paint.getTextBounds(),但这是一个来自资源的字符串,其中包含换行符和属性设置如何在Android中获取文本字符串(带有属性)的边界?,android,font-size,Android,Font Size,在参考资料中给定一个字符串,如何获取它的边框 对于纯文本,我可以使用Paint.getTextBounds(),但这是一个来自资源的字符串,其中包含换行符和属性设置 <string name="foobar"><small>Foo</small>\nBar</string> Foo\nBar 换句话说,我正在实现一个自定义视图,它将显示这样的字符串,我想计算视图的大小 更多细节:基本上,我正在实现一个TextView的变体,它可以调整字体大小以
<string name="foobar"><small>Foo</small>\nBar</string>
Foo\nBar
换句话说,我正在实现一个自定义视图,它将显示这样的字符串,我想计算视图的大小
更多细节:基本上,我正在实现一个TextView的变体,它可以调整字体大小以适应可用空间,而不是调整大小以适应文本。尝试以下方法:
String.xml
<string name="foobar"><small>Foo</small>\nBar</string>
它将在可见屏幕区域显示TextView使用的必需属性
希望对你有帮助
谢谢。您想在自定义视图中显示html。我说得清楚吗 如果您想通过自己的代码实现这一切。这是一项非常庞大的工作。扩展TextView并重写某些方法是最好的选择,但是如果您坚持编写自己的类,您仍然可以从某些系统类获得帮助 显示和测量html应该遵循TextView的代码,您可以在TextView.onDraw()和TextView.onMeasure()中找到这一点,这里我只讨论测量html的步骤
Html.fromHtml()
StaticLayout
或DynamicLayout
Layout.getLineWidth()
和Layout.getHeight()
测量文本哦,我应该提到,我已经查看了TextView的源代码以寻找提示,但这对我来说有点太复杂了。在上找到了很多有用的信息是的,实际上我正在覆盖TextView。谢谢;我不熟悉布局类;现在就去调查一下。我只是浪费了一个星期的时间,因为我太聪明了。我看到StaticLayout是从CharSequence实例化的,但是我的文本中嵌入了样式信息,包括字体大小的更改,所以使用CharSequence的东西对我来说不起作用。最后,我意识到Spanable也是一个字符序列,从读取源代码到StaticLayout,我意识到它对Spanable进行了特殊处理。现在我有了那块拼图,我意识到你已经找到了我问题的答案--谢谢,谢谢,;“我会玩的。”爱德华福尔克:好的,当然。如果我还有什么需要,请告诉我。@EdwardFalk你有机会玩这个吗。它对你有帮助吗?还没有;我去度假了。不过今晚可能会玩。
final TextView mytext = (TextView) findViewById(R.id.my_textView);
mytext.setText(getString(R.string.foobar));
Button btn_getTextBounds = (Button) findViewById(R.id.ok);
btn_getTextBounds.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Rect rectf = new Rect();
mytext.getLocalVisibleRect(rectf);
Log.d("WIDTH :",String.valueOf(rectf.width()));
Log.d("HEIGHT :",String.valueOf(rectf.height()));
Log.d("left :",String.valueOf(rectf.left));
Log.d("right :",String.valueOf(rectf.right));
Log.d("top :",String.valueOf(rectf.top));
Log.d("bottom :",String.valueOf(rectf.bottom));
}
});