如何在Android中利用TextView实现自定义竖排

  介绍

这篇文章给大家介绍如何在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实现自定义竖排就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。

如何在Android中利用TextView实现自定义竖排