有没有一种方法可以让TextView选择一个字体大小,使其填满它所拥有的所有可用空间?例如:
<LinearLayout
layout_width="fill_parent"
layout_height="50dip" >
<TextView
layout_width="fill_parent"
layout_height="fill_parent"
textSize="scale?" />
</LinearLayout>
感谢。有没有一种方法可以让TextView选择一个字体大小,使其填满它所拥有的所有可用空间?例如:
<LinearLayout
layout_width="fill_parent"
layout_height="50dip" >
<TextView
layout_width="fill_parent"
layout_height="fill_parent"
textSize="scale?" />
</LinearLayout>
感谢。不,TextView
没有内置的字体缩放功能。您可以在继承 TextView
的子类中重载 onDraw()
方法,但 TextView
不支持自动缩放文本。
可以参考此问题。
更新一下,从API 26(Android 8.0)开始,TextView有一个属性可以在水平和垂直轴上缩放文本。
<?xml version="1.0" encoding="utf-8"?>
<TextView
android:layout_width="match_parent"
android:layout_height="200dp"
android:autoSizeTextType="uniform" />
请访问自适应TextView了解更多信息。
就像Nick Campion所引用的答案一样,我使用了一个循环和一个固定布局来迭代到正确的大小。 我的要求是适应宽度并且不超过一行(没有省略号):
int i = 0;
while(i < 2) {
layout = new StaticLayout(text, textPaint, w, Alignment.ALIGN_NORMAL, 1, 0, true);
i = layout.getLineCount();
textSize += 2;
textPaint.setTextSize(textSize);
}
textPaint.setTextSize(textSize*0.95f);