我有这段代码。
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.8"
android:orientation="vertical"
android:id="@+id/textLayout"
android:background="@drawable/vdaybg"
android:gravity="center"
android:layout_gravity="center">
<TextView
android:id="@+id/detail_text"
android:text="hello"
android:background="#55000000"
android:lineSpacingExtra="5dp"
android:textSize="30dp"
android:textColor="@android:color/white"
android:layout_margin="10dp"
android:layout_gravity="center"
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="match_parent">
</TextView>
</LinearLayout>
我正在通过“活动”动态设置文本
detailText.setText(msg);
detailText.setTypeface(Utils.typeFaceBold);
现在,由于我要设置多行文本,因此较大的行将换行到下一行。 我想防止这种情况。 我要在线条弯曲时减小字体大小。
目前,我已经找到了这段代码来实现
public void correctWidth(TextView textView, int desiredWidth) {
Paint paint = new Paint();
Rect bounds = new Rect();
paint.setTypeface(textView.getTypeface());
float textSize = textView.getTextSize();
paint.setTextSize(textSize);
String text = textView.getText().toString();
paint.getTextBounds(text, 0, text.length(), bounds);
while (bounds.width() > desiredWidth)
{
textSize--;
paint.setTextSize(textSize);
paint.getTextBounds(text, 0, text.length(), bounds);
}
textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize);
}
但是要传递的期望宽度是多少?能行吗?
答案 0 :(得分:0)
您可以使用“自动调整TextView的大小”来定义多个文本大小。
<resources>
<array name="autosize_text_sizes">
<item>10sp</item>
<item>12sp</item>
<item>20sp</item>
<item>40sp</item>
<item>100sp</item>
</array>
</resources>
<?xml version="1.0" encoding="utf-8"?>
<TextView
android:layout_width="match_parent"
android:layout_height="200dp"
android:autoSizeTextType="uniform"
android:autoSizePresetSizes="@array/autosize_text_sizes" />
这是Android开发者网站上的Autosizing TextViews官方文档。