当前位置:网站首页>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
边栏推荐
- H. 265 introduction to coding principles
- 字节跳动面试官:一张图片占据的内存大小是如何计算
- 天龙八部TLBB系列 - 关于技能冷却和攻击范围数量的问题
- Design and Simulation of fuzzy PID control system for liquid level of double tank (matlab/simulink)
- Those who are good at using soldiers, hide in the invisible, and explain the best promotional value works in depth in 90 minutes
- Using directive in angualr2 to realize that the picture size changes with the window size
- 程序员搞开源,读什么书最合适?
- Common fault analysis and Countermeasures of using MySQL in go language
- Tdengine offline upgrade process
- Tianlong Babu TLBB series - about items dropped from packages
猜你喜欢

RMS TO EAP通过MQTT简单实现

硬核,你见过机器人玩“密室逃脱”吗?(附代码)

Advanced opencv:bgr pixel intensity map

Uncover the practice of Baidu intelligent testing in the field of automatic test execution

Those who are good at using soldiers, hide in the invisible, and explain the best promotional value works in depth in 90 minutes
![[tips] get the x-axis and y-axis values of cdfplot function in MATLAB](/img/08/2d039df6ea3ace8685512b2af8281d.png)
[tips] get the x-axis and y-axis values of cdfplot function in MATLAB

Kotlin compose and native nesting

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

Oracle combines multiple rows of data into one row of data

把欧拉的创新带向世界 SUSE 要做那个引路人
随机推荐
RMS to EAP is simply implemented through mqtt
天龙八部TLBB系列 - 单体技能群伤
The king of pirated Dall · e? 50000 images per day, crowded hugging face server, and openai ordered to change its name
Is it really reliable for AI to make complex decisions for enterprises? Participate in the live broadcast, Dr. Stanford to share his choice | qubit · viewpoint
Wechat applet - simple diet recommendation (2)
基于单片机步进电机控制器设计(正转反转指示灯挡位)
Swift set pickerview to white on black background
H. 265 introduction to coding principles
MySQL数字类型学习笔记
View Slide
Wechat applet - simple diet recommendation (3)
Cerebral Cortex:有向脑连接识别帕金森病中广泛存在的功能网络异常
. Net delay queue
Charm of code language
Mobile heterogeneous computing technology GPU OpenCL programming (Advanced)
【C语言】动态内存开辟的使用『malloc』
Roll up, break through 35 year old anxiety, and animate the CPU to record the function call process
[200 opencv routines] 219 Add digital watermark (blind watermark)
[system design] index monitoring and alarm system
MySQL character type learning notes