Android 中的 TextPaint
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 中的 TextPaint相关的知识,希望对你有一定的参考价值。
参考技术A 原文 > http://blog.csdn.net/su1216/article/details/46900617top:浅灰色
ascent:黄色
baseline:红色
descent:蓝色
bottom:绿色
baseline为基准,向上为负,向下为正。ascent为负数,descent为正数。
Canvas中的drawText中的总坐标是baseline,所以我们这里要先算出baseline的位置才行。
setStrikeThruText (boolean strikeThruText)
设置文本删除线。
setTextAlign (Paint.Align align)
设置文本的对齐方式,可供选的方式有三种:CENTER,LEFT和RIGHT。
setTextLocale (Locale locale)
设置地理位置,这里如果你要使用,直接传入Locale.getDefault()即可。它用来设置文本的区域比如中文、日文等。
setTextScaleX (float scaleX)
将文本沿X轴水平缩放,默认值为1,当值大于1会沿X轴水平放大文本,当值小于1会沿X轴水平缩放文本
setTextSize (float textSize)
设置文字的大小,但是要注意该值必需大于零。
setTextSkewX(float skewX)
设置文本在水平方向上的倾斜。这个倾斜值没有具体的范围,但是官方推崇的值为-0.25可以得到比较好的倾斜文本效果,值为负右倾值为正左倾,默认值为0。
setTypeface (Typeface typeface)
设置文本字体样式。
setUnderlineText(boolean underlineText)
设置文字的下划线。
Android Canvas - StaticLayout 绘制多行文字
Canvas.drawText 只能绘制一行文字,文字多了会超出屏幕之外。
要想绘制多行文字,可以使用 StaticLayout。
class CustomView(context: Context?, attrs: AttributeSet?) : View(context, attrs)
private val textPaint: TextPaint = TextPaint(Paint.ANTI_ALIAS_FLAG)
private val staticLayout: StaticLayout by lazy
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
val builder = StaticLayout.Builder.obtain(TEXT, 0, TEXT.length, textPaint, width)
.setAlignment(Layout.Alignment.ALIGN_NORMAL)
.setLineSpacing(0f, 1f) // add, multiplier
.setIncludePad(false)
builder.build()
else
StaticLayout(TEXT, textPaint, width, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0f, false)
init
textPaint.color = Color.RED
textPaint.textSize = 30f
override fun onDraw(canvas: Canvas)
super.onDraw(canvas)
staticLayout.draw(canvas)
companion object
private const val TEXT =
"abcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyz"
以上是关于Android 中的 TextPaint的主要内容,如果未能解决你的问题,请参考以下文章
android 6中的android webview youtube视频中的全屏模式问题
android权限--android开发中的权限及含义(上)
FrameLayout 中的 'android:foreground' 和 'android:foregroundGravity' 如何影响其外观?
Android - 将参数传递给 Android 应用程序中的 RESTful URL