当前位置:网站首页>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
边栏推荐
- ThreadLocal source code learning
- Tianlong Babu TLBB series - single skill group injury
- Unity particle special effects series - the poison spray preform is ready, and the unitypackage package is directly used - on
- Cerebral cortex: directed brain connection recognition widespread functional network abnormalities in Parkinson's disease
- 硬核,你见过机器人玩“密室逃脱”吗?(附代码)
- 天龙八部TLBB系列 - 关于包裹掉落的物品
- On July 2, I invite you to TD Hero online press conference
- Click the picture in the mobile browser and the picture will not pop up
- Tianlong Babu TLBB series - about items dropped from packages
- Cut off 20% of Imagenet data volume, and the performance of the model will not decline! Meta Stanford et al. Proposed a new method, using knowledge distillation to slim down the data set
猜你喜欢

How to get the STW (pause) time of GC (garbage collector)?

Unity particle special effects series - the poison spray preform is ready, and the unitypackage package is directly used - on

RMS TO EAP通过MQTT简单实现

Generics, generic defects and application scenarios that 90% of people don't understand

程序员搞开源,读什么书最合适?

Apache dolphin scheduler system architecture design

Cross process communication Aidl

Baidu app's continuous integration practice based on pipeline as code

字节跳动面试官:一张图片占据的内存大小是如何计算

【OpenCV 例程200篇】219. 添加数字水印(盲水印)
随机推荐
Cent7 Oracle database installation error
Swift tableview style (I) system basic
Kotlin Compose 与原生 嵌套使用
TypeError: Cannot read properties of undefined (reading ‘cancelToken‘)
【OpenCV 例程200篇】219. 添加数字水印(盲水印)
字节跳动面试官:一张图片占据的内存大小是如何计算
【系统设计】指标监控和告警系统
【小技巧】获取matlab中cdfplot函数的x轴,y轴的数值
单片机原理与接口技术(ESP8266/ESP32)机器人类草稿
双容水箱液位模糊PID控制系统设计与仿真(Matlab/Simulink)
Application of data modeling based on wide table
Windows uses commands to run kotlin
Android SQLite database encryption
Jupiter notebook shortcut key
ThreadLocal source code learning
Tongweb set gzip
Tdengine connector goes online Google Data Studio app store
Apache DolphinScheduler 入门(一篇就够了)
Observation cloud and tdengine have reached in-depth cooperation to optimize the cloud experience of enterprises
Implementation of smart home project