当前位置:网站首页>StaticLayout的使用详解
StaticLayout的使用详解
2022-07-05 09:41:00 【沙漠一只雕得儿得儿】
在Android开发中,Canvas.drawText不会换行,即使一个很长的字符串也只会显示一行,超出部分会隐藏在屏幕之外。
StaticLayout是android中处理文字的一个工具类,StaticLayout 处理了文字换行的问题,如如下示例:
package com.zhy.someuitest;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.text.Layout;
import android.text.StaticLayout;
import android.text.TextPaint;
import android.util.AttributeSet;
import android.view.View;
import androidx.annotation.Nullable;
public class StaticLayoutView extends View {
StaticLayout staticLayout;
public StaticLayoutView(Context context) {
this(context, null);
}
public StaticLayoutView(Context context, @Nullable AttributeSet attrs) {
this(context, attrs, 0);
}
public StaticLayoutView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
TextPaint textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG);
textPaint.setColor(Color.BLACK);
textPaint.setStyle(Paint.Style.FILL);
textPaint.setTextSize(50);
String text = "在Android开发中,Canvas.drawText不会换行,即使一个很长的字符串也只会显示一行,超出部分会隐藏在屏幕之外.StaticLayout是android中处理文字的一个工具类,StaticLayout 处理了文字换行的问题";
staticLayout = new StaticLayout(text, textPaint, canvas.getWidth(), Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false);
staticLayout.draw(canvas);
}
}
Staticlayout的中构造参数有三个:
以 public StaticLayout(CharSequence source, int bufstart, int bufend,
TextPaint paint, int outerwidth,
Alignment align,
float spacingmult, float spacingadd,
boolean includepad,
TextUtils.TruncateAt ellipsize, int ellipsizedWidth) {
this(source, bufstart, bufend, paint, outerwidth, align,
TextDirectionHeuristics.FIRSTSTRONG_LTR,
spacingmult, spacingadd, includepad, ellipsize, ellipsizedWidth, Integer.MAX_VALUE);
}说明参数的作用
CharSequence source 需要分行的字符串
int bufstart 需要分行的字符串从第几的位置开始
int bufend 需要分行的字符串到哪里结束
TextPaint paint 画笔对象
int outerwidth layout的宽度,超出时换行
Alignment align layout的对其方式,有ALIGN_CENTER, ALIGN_NORMAL, ALIGN_OPPOSITE 三种
float spacingmult 相对行间距,相对字体大小,1.5f表示行间距为1.5倍的字体高度。
float spacingadd 在基础行距上添加多少
boolean includepad,
TextUtils.TruncateAt ellipsize 从什么位置开始省略
int ellipsizedWidth 超过多少开始省略
补充:TextView其实也是使用 StaticLayout
边栏推荐
- Meitu lost 300 million yuan in currency speculation for half a year. Huawei was exposed to expand its enrollment in Russia. Alphago's peers have made another breakthrough in chess. Today, more big new
- Solve liquibase – waiting for changelog lock Cause database deadlock
- A high density 256 channel electrode cap for dry EEG
- Implementation of smart home project
- isEmpty 和 isBlank 的用法区别
- TypeError: Cannot read properties of undefined (reading ‘cancelToken‘)
- Tdengine offline upgrade process
- Generics, generic defects and application scenarios that 90% of people don't understand
- 《微信小程序-基础篇》小程序中的事件与冒泡
- Getting started with Apache dolphin scheduler (one article is enough)
猜你喜欢
The king of pirated Dall · e? 50000 images per day, crowded hugging face server, and openai ordered to change its name
宝塔面板MySQL无法启动
Energy momentum: how to achieve carbon neutralization in the power industry?
Swift set pickerview to white on black background
[tips] get the x-axis and y-axis values of cdfplot function in MATLAB
The writing speed is increased by dozens of times, and the application of tdengine in tostar intelligent factory solution
Cross process communication Aidl
RMS TO EAP通过MQTT简单实现
RMS to EAP is simply implemented through mqtt
Evolution of Baidu intelligent applet patrol scheduling scheme
随机推荐
Application of data modeling based on wide table
Using directive in angualr2 to realize that the picture size changes with the window size
Android SQLite database encryption
【OpenCV 例程200篇】219. 添加数字水印(盲水印)
H. 265 introduction to coding principles
Solve liquibase – waiting for changelog lock Cause database deadlock
Unity particle special effects series - the poison spray preform is ready, and the unitypackage package is directly used - on
Swift saves an array of class objects with userdefaults and nssecurecoding
Cerebral Cortex:有向脑连接识别帕金森病中广泛存在的功能网络异常
QT event filter simple case
Those who are good at using soldiers, hide in the invisible, and explain the best promotional value works in depth in 90 minutes
【 conseils 】 obtenir les valeurs des axes X et y de la fonction cdfplot dans MATLAB
一个程序员的职业生涯到底该怎么规划?
90%的人都不懂的泛型,泛型的缺陷和应用场景
MySQL字符类型学习笔记
分布式数据库下子查询和 Join 等复杂 SQL 如何实现?
【小技巧】獲取matlab中cdfplot函數的x軸,y軸的數值
. Net delay queue
Openes version query
Coordinate system of view