Android 中的 TextPaint

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 中的 TextPaint相关的知识,希望对你有一定的参考价值。

参考技术A 原文 > http://blog.csdn.net/su1216/article/details/46900617

top:浅灰色
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

Android 中的 ContactsContract 概览

android布局中的tag怎么用