我正在尝试将一些字符串写入画布(动态壁纸),但是长字符串不会自动换行,有没有什么方法可以实现自动换行?
我认为画布是唯一可用的工具,因为这是一个动态壁纸。
无需自己进行文字换行处理。
可以查看 android.text.Layout 及其子类 android.text.StaticLayout 和 android.text.DynamicLayout。
例如:
StaticLayout layout = new StaticLayout(text, txtpaint, textW,Layout.Alignment.ALIGN_NORMAL, 1.3f, 0, false);
txtcanvas.translate(xoffs, yoffs); //position the text
layout.draw(txtcanvas);
不确定这对你是否有用,但对于这些情况,我真的很喜欢简单地创建一个视图,布局它,然后将其“截屏”成位图。
此函数将从参数和“just_a_textview”中的xml布局创建位图。
private static Bitmap renderTextIntoBitmap(Context context, Bitmap.Config bitmapConfig, String text, int textColor, int maxTextWidth) {
LayoutInflater inflater = LayoutInflater.from(context);
TextView tv = (TextView) inflater.inflate(R.layout.just_a_textview, null);
tv.setText(text);
tv.setMaxWidth(maxTextWidth);
int widthSpec = View.MeasureSpec.makeMeasureSpec(maxTextWidth, View.MeasureSpec.EXACTLY);
int heightSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
tv.measure(widthSpec, heightSpec);
tv.layout(0, 0, tv.getMeasuredWidth(), tv.getMeasuredHeight());
tv.setTextColor(textColor);
Bitmap bitmap = Bitmap.createBitmap(tv.getWidth(), tv.getHeight(), bitmapConfig);
Canvas canvas = new Canvas(bitmap);
tv.draw(canvas);
return bitmap;
}