介绍
这篇文章给大家介绍如何在Android中利用TextView实现自定义竖排,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
测试用的活动。
公共类VerticalTextView延伸TextView {/* * *绘制整个VerticalTextView区域大小的画笔 */私人油漆mPaint;/* * *绘制每个竖排字符间的间隔横线的画笔 */私人油漆linePaint;/* * *绘制单个字符的画笔 */私人油漆charPaint; 私人char[]索引; 私人int textCount; 私人字符串textString; 公共VerticalTextView(上下文语境,AttributeSet attrs) { 这(上下文、attrs 0); } 公共VerticalTextView(上下文语境、AttributeSet attrs int defStyle) { 超级(上下文、attrs defStyle); mPaint=new油漆(); linePaint=new油漆(); charPaint=new油漆(); .toString textString=getText () (); 指标=getKeyChar (textString); textCount=textString.toCharArray . length (); } @Override 保护空白> canvas.drawText (String.valueOf(指标[我]),getWidth()/2,(浮动)(((i + 0.5) * childHeight) - (fm。提升+ fm.descent)/2 ),charPaint);
第一个参数是要绘制的字符,第二个参数绘制字符的x轴起始点,第三个参数比较复杂,重点说下前半部分
(i + 0.5) * childHeight
表示每个字符区域高度的一办所在的y轴坐标,后半部分
(fm。提升+ fm.descent)/2
这个是个矫正值,如果不跟上它,绘制出来的字符会整体靠上。这里要参考字符的绘制原理,明白了后就很简单了。这里我就不在过多叙述。
最后是测试活动的布局文件:
& lt; FrameLayout xmlns: android=癶ttp://schemas.android.com/apk/res/android" xmlns:工具=癶ttp://schemas.android.com/tools" android: layout_width=癿atch_parent" android: layout_height=癿atch_parent"比; & lt; com.example.demoindextextview.widget.VerticalTextView android: id=癅 + id/vertical_tv" android: layout_width=?0 dp" android: layout_height=癿atch_parent" android: layout_gravity=皉ight" android:文本=癆BCDEFGsdfsf你好吗sdfsdklmnopqrstuvwxyz"/比; & lt; TextView android: id=癅 + id/content_tx" android: layout_gravity=癱enter" android:重力=癱enter" android: layout_height=?0 dp" android: layout_width=?0 dp" android: textSize=?0 sp" android:可见性=癷nvisible"/比; & lt;/FrameLayout>
关于如何在Android中利用TextView实现自定义竖排就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。