精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Android重寫TextView實(shí)現(xiàn)文字整齊排版

移動開發(fā) Android
TextView有時不能滿足我們排版的需求,那么如何重新定義TextView以實(shí)現(xiàn)我們的想法呢?本文介紹了如何重寫TextView實(shí)現(xiàn)文字整齊排版。

TextView有時不能滿足我們排版的需求,那么如何重新定義TextView以實(shí)現(xiàn)我們的想法呢,以下是實(shí)現(xiàn)的代碼:

  1.  //XRTextView類 
  2. package rong.android.test; 
  3. import org.json.JSONArray; 
  4. import org.json.JSONException; 
  5. import android.content.Context; 
  6. import android.graphics.Canvas; 
  7. import android.graphics.Color; 
  8. import android.graphics.Paint; 
  9. import android.util.AttributeSet; 
  10. import android.view.View; 
  11. import android.widget.TextView; 
  12. public class XRTextView extends TextView{ 
  13.  private final String namespace = "rong.android.TextView"
  14.  private String text; 
  15.  private float textSize; 
  16.  private float paddingLeft; 
  17.  private float paddingRight; 
  18.  private float marginLeft; 
  19.  private float marginRight; 
  20.  private int textColor; 
  21.  private JSONArray colorIndex; 
  22.  private Paint paint1 = new Paint(); 
  23.  private Paint paintColor = new Paint(); 
  24.  private float textShowWidth; 
  25.  private float Spacing = 0
  26.  private float LineSpacing = 1.3f;//行與行的間距 
  27.   
  28.  public XRTextView(Context context, AttributeSet attrs) { 
  29.   super(context, attrs); 
  30.   text = attrs.getAttributeValue( 
  31.     "http://schemas.android.com/apk/res/android""text"); 
  32.   textSize = attrs.getAttributeIntValue(namespace, "textSize"25);//字體大小 
  33.   textColor = attrs.getAttributeIntValue(namespace, "textColor",Color.BLUE);//字體顏色 
  34.   paddingLeft = attrs.getAttributeIntValue(namespace, "paddingLeft"0); 
  35.   paddingRight = attrs.getAttributeIntValue(namespace, "paddingRight"0); 
  36.   marginLeft = attrs.getAttributeIntValue(namespace, "marginLeft"0); 
  37.   marginRight = attrs.getAttributeIntValue(namespace, "marginRight"0); 
  38.   paint1.setTextSize(textSize); 
  39.   paint1.setColor(textColor); 
  40.   paint1.setAntiAlias(true); 
  41.   paintColor.setAntiAlias(true); 
  42.   paintColor.setTextSize(textSize); 
  43.   paintColor.setColor(Color.BLUE); 
  44.  } 
  45.  public XRTextView(Context context, float textSize, int textColor, float paddingLeft, float paddingRight, float marginLeft, float marginRight){ 
  46.   super(context); 
  47.   this.textSize = textSize; 
  48.   this.textColor = textColor; 
  49.   this.paddingLeft = paddingLeft; 
  50.   this.paddingRight = paddingRight; 
  51.   this.marginLeft = marginLeft; 
  52.   this.marginRight = marginRight; 
  53.   paint1.setTextSize(textSize); 
  54.   paint1.setColor(textColor); 
  55.   paint1.setAntiAlias(true); 
  56.   paintColor.setAntiAlias(true); 
  57.   paintColor.setTextSize(textSize); 
  58.   paintColor.setColor(Color.BLUE); 
  59.  } 
  60.   
  61.  public JSONArray getColorIndex() { 
  62.   return colorIndex; 
  63.  } 
  64.  public void setColorIndex(JSONArray colorIndex) { 
  65.   this.colorIndex = colorIndex; 
  66.  } 
  67.  /** 
  68.   * 傳入一個索引,判斷當(dāng)前字是否被高亮 
  69.   * @param index 
  70.   * @return 
  71.   * @throws JSONException 
  72.   */ 
  73.  public boolean isColor(int index) throws JSONException{ 
  74.   if(colorIndex == null){ 
  75.    return false
  76.   } 
  77.   for(int i = 0 ; i < colorIndex.length() ; i ++){ 
  78.    JSONArray array = colorIndex.getJSONArray(i); 
  79.    int start = array.getInt(0); 
  80.    int end = array.getInt(1)-1
  81.    if(index >= start && index <= end){ 
  82.     return true
  83.    } 
  84.     
  85.   } 
  86.    
  87.    
  88.   return false
  89.  } 
  90.   
  91.  @Override 
  92.  protected void onDraw(Canvas canvas) { 
  93. //  super.onDraw(canvas); 
  94.   View view=(View)this.getParent(); 
  95.   textShowWidth=view.getMeasuredWidth()-paddingLeft - paddingRight - marginLeft - marginRight; 
  96.   int lineCount = 0
  97.    
  98.   text = this.getText().toString();//.replaceAll("\n", "\r\n"); 
  99.   if(text==null)return
  100.   char[] textCharArray = text.toCharArray(); 
  101.   // 已繪的寬度 
  102.   float drawedWidth = 0
  103.   float charWidth; 
  104.   for (int i = 0; i < textCharArray.length; i++) { 
  105.    charWidth = paint1.measureText(textCharArray, i, 1); 
  106.     
  107.    if(textCharArray[i]=='\n'){ 
  108.     lineCount++; 
  109.     drawedWidth = 0
  110.     continue
  111.    } 
  112.    if (textShowWidth - drawedWidth < charWidth) { 
  113.     lineCount++; 
  114.     drawedWidth = 0
  115.    } 
  116.    boolean color = false
  117.    try { 
  118.     color = isColor(i); 
  119.    } catch (JSONException e1) { 
  120.     // TODO Auto-generated catch block 
  121.     e1.printStackTrace(); 
  122.    } 
  123.     
  124.    if(color){ 
  125.      
  126.     canvas.drawText(textCharArray, i, 1, paddingLeft + drawedWidth, 
  127.       (lineCount + 1) * textSize * LineSpacing, paintColor); 
  128.    }else
  129.      
  130.     canvas.drawText(textCharArray, i, 1, paddingLeft + drawedWidth, 
  131.       (lineCount + 1) * textSize * LineSpacing, paint1); 
  132.    } 
  133.    if(textCharArray[i] > 127 && textCharArray[i] != '、' && textCharArray[i] != ',' && textCharArray[i] != '。' && textCharArray[i] != ':' && textCharArray[i] != '!'){ 
  134.     drawedWidth += charWidth + Spacing; 
  135.      
  136.    }else
  137.     drawedWidth += charWidth; 
  138.    } 
  139.   } 
  140.   setHeight((int) ((lineCount + 1) * (int) textSize * LineSpacing + 10)); 
  141.  } 
  142.  public float getSpacing() { 
  143.   return Spacing; 
  144.  } 
  145.  public void setSpacing(float spacing) { 
  146.   Spacing = spacing; 
  147.  } 
  148.  public float getMYLineSpacing() { 
  149.   return LineSpacing; 
  150.  } 
  151.  public void setMYLineSpacing(float lineSpacing) { 
  152.   LineSpacing = lineSpacing; 
  153.  } 
  154.  public float getMYTextSize() { 
  155.   return textSize; 
  156.  } 
  157.  public void setMYTextSize(float textSize) { 
  158.   this.textSize = textSize; 
  159.   paint1.setTextSize(textSize); 
  160.   paintColor.setTextSize(textSize); 
  161.  } 
  162.   
  163.   
  164.  
  165.   
  166.  
  167.   
  168. //MainActivity類 
  169. package rong.android.test; 
  170. import android.os.Bundle; 
  171. import android.widget.TextView; 
  172. import android.app.Activity; 
  173. public class MainActivity extends Activity { 
  174.  private XRTextView xrtextview = null
  175.  private TextView textview = null
  176.  private String content = "abcdefgABCDEF我要你lfwjkdfl;skjf asljkflskjfls;kjfsljfwfisdlfjsllkjsdfjlskjf546132s1f3sd4f31s3dffslfksjdfljlsadkjflsajdf sdfjklsajdflsa;jdfls 的!@#$%^&*()_"
  177.  @Override 
  178.  protected void onCreate(Bundle savedInstanceState) { 
  179.   super.onCreate(savedInstanceState); 
  180.   setContentView(R.layout.activity_main); 
  181.   xrtextview = (XRTextView) this.findViewById(R.id.mytextview_tv); 
  182.   xrtextview.setText(content); 
  183.   textview = (TextView) this.findViewById(R.id.mytextview_tv1); 
  184.   textview.setText(content); 
  185.  } 
  186. }  

 

  1. //布局文件 
  2. LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  3.    xmlns:tools="http://schemas.android.com/tools" 
  4.    android:layout_width="match_parent" 
  5.    android:layout_height="match_parent" 
  6.    android:orientation="vertical" > 
  7.    <rong.android.test.XRTextView 
  8.        android:id="@+id/mytextview_tv" 
  9.        android:layout_width="match_parent" 
  10.        android:layout_height="wrap_content" /> 
  11.    <TextView 
  12.        android:id="@+id/mytextview_tv1" 
  13.        android:layout_width="match_parent" 
  14.        android:layout_height="wrap_content" 
  15.        android:textColor="@android:color/black" /> 
  16. /LinearLayout>  

源碼下載:百度盤

責(zé)任編輯:徐川 來源: OSChina
相關(guān)推薦

2013-03-28 15:47:53

TextView文字自

2010-09-06 13:21:04

TextViewAndroid

2017-04-20 12:45:08

AndroidTextView

2010-09-08 17:20:42

CSS

2011-10-19 17:42:10

WPS 2012

2010-09-14 10:34:17

DIV CSS

2013-04-07 10:09:00

Android開發(fā)TextView屬性

2021-02-26 20:01:30

LaTex排版LaTeX排版

2010-09-01 14:20:19

CSS排版

2016-12-07 10:32:14

移動應(yīng)用開發(fā)底部導(dǎo)航android

2011-09-14 11:31:26

Android API

2012-12-25 13:54:28

AndroidTextview

2010-09-10 14:54:12

DIV排版

2010-08-30 14:03:59

CSS

2010-09-10 10:09:26

Android

2009-12-30 15:26:02

Silverlight

2025-02-12 00:35:24

WinForm框架工具

2025-09-15 05:00:00

Qwen-Image通義千問AI設(shè)計(jì)師

2019-11-27 09:22:15

戴爾

2009-07-30 09:42:29

CSS實(shí)現(xiàn)文字旋轉(zhuǎn)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

亚洲麻豆视频| 国产亚洲人成a在线v网站| 国产91精品久久久久久久网曝门| 欧美大片欧美激情性色a∨久久| 亚洲一级片免费观看| 麻豆网站视频在线观看| 国产激情偷乱视频一区二区三区| 国内精品小视频| 天天躁夜夜躁狠狠是什么心态 | 欧美激情中文网| 亚洲观看黄色网| 福利精品一区| 亚洲一区二区三区免费视频| 欧洲一区二区在线| 国产高清不卡视频| 一区在线免费观看| 日韩电影网在线| 天天干天天操天天玩| 怡红院在线播放| 久久美女艺术照精彩视频福利播放| 国产在线视频不卡| 日本熟妇毛茸茸丰满| 成人影视亚洲图片在线| 日韩你懂的在线播放| 男人女人黄一级| 国产日产一区二区| 波多野结衣精品在线| 国产精品6699| 久久99久久久| 日韩av片子| 亚洲福利在线播放| 中文字幕22页| 两个人看的在线视频www| 国产日产欧产精品推荐色 | 亚洲人成在线观看网站高清| 手机在线视频一区| 偷拍中文亚洲欧美动漫| 亚洲一二三四久久| 亚洲一区二区三区涩| 天天摸夜夜添狠狠添婷婷| 麻豆精品一区二区| 国产suv精品一区二区| 国产精品7777| 欧美日韩免费| 久久成人一区二区| 少妇视频在线播放| 免费观看不卡av| 亚洲精品一区二区三区蜜桃下载| 亚洲精品乱码久久久久久动漫| 色综合天天色| 日本精品一级二级| 精品一卡二卡三卡| 蜜桃视频动漫在线播放| 亚洲资源中文字幕| 成人午夜视频免费观看| 黄网站app在线观看| 国产精品三级av| 台湾成人av| yiren22综合网成人| 久久精品一区二区三区不卡牛牛| 成人区精品一区二区| 国产婷婷一区二区三区久久| 黑人巨大精品欧美一区| 成人激情视频在线播放| 亚洲字幕av一区二区三区四区| 青青草成人在线观看| 国产精品久久久久久久久久久新郎 | www.污网站| 日本一区免费网站| 91福利在线免费观看| 日韩欧美在线免费观看视频| 久久久人成影片一区二区三区在哪下载 | 第一会所亚洲原创| 亚洲欧美中文日韩在线| 国产 中文 字幕 日韩 在线| 日韩美女毛片| 亚洲一区www| 国产成人精品视频免费| 91精品国产乱码久久久久久久| 欧美成人自拍视频| 国产在线观看免费av| 国产精品一级| 国产精品久久久久久久久久久久久 | 男女无套免费视频网站动漫| 国产极品一区| 欧美精品高清视频| 深夜视频在线观看| 天天躁日日躁成人字幕aⅴ| 亚洲图中文字幕| 久久久国产一级片| 欧美在线二区| 7777免费精品视频| 97人妻精品视频一区| 国模少妇一区二区三区| 国产91免费视频| 水中色av综合| 中文字幕在线不卡一区| 成人在线播放网址| 欧美三级网址| 日韩一区二区三区视频| 韩国无码一区二区三区精品| 凹凸成人精品亚洲精品密奴| 久久久99久久精品女同性| 久久成人国产精品入口| 日韩av高清在线观看| 亚洲综合一区二区不卡| 日本在线一二三| 国产精品传媒在线| 青青青免费在线| 国产原创一区| 日韩精品在线播放| 国产suv精品一区二区68| 99国产精品| 成人免费看吃奶视频网站| 亚洲av电影一区| 亚洲色图在线看| 亚洲成熟丰满熟妇高潮xxxxx| 欧美视频三区| 中文字幕无线精品亚洲乱码一区 | 亚洲在线视频免费观看| 欧美自拍小视频| 久久精品色综合| 久久天天躁日日躁| 国产成人自拍偷拍| 成人av免费在线| 免费看污污视频| 日韩欧美2区| 日韩成人在线播放| 久久亚洲av午夜福利精品一区| 美国一区二区三区在线播放| 久久一区二区三区av| 日皮视频在线观看| 欧美二区三区的天堂| 精品无码人妻一区二区免费蜜桃| 亚洲激情视频| 国产精品区一区| 成人影欧美片| 欧美日本韩国一区二区三区视频| 日韩人妻无码一区二区三区| 影音先锋在线一区| 亚洲伊人第一页| 国产黄网站在线观看| 欧美日韩一级片在线观看| 37p粉嫩大胆色噜噜噜| 激情亚洲成人| www.av一区视频| 在线中文字幕-区二区三区四区| 欧美日韩的一区二区| 色欲狠狠躁天天躁无码中文字幕| 久久综合导航| 欧美在线视频一区二区三区| 全亚洲第一av番号网站| 亚洲欧美日韩国产成人| 毛片毛片女人毛片毛片| 91亚洲男人天堂| 欧美亚洲日本一区二区三区| 久久夜色精品国产噜噜av小说| 欧美激情一级精品国产| 黄色片一区二区| 亚洲成人www| 亚洲精品乱码久久| 国产亚洲欧洲| 欧洲亚洲一区| 激情亚洲小说| 久久综合国产精品台湾中文娱乐网| 国产精品久久久久久免费免熟| 亚洲男人的天堂在线观看| 深夜福利网站在线观看| 欧美精品自拍| 国产在线一区二| 欧美裸体视频| 夜夜嗨av色综合久久久综合网| 中文字幕日本视频| 1000精品久久久久久久久| 国产精品区在线| 一本到12不卡视频在线dvd| 3d动漫啪啪精品一区二区免费| 欧美人与性动交α欧美精品图片| 亚洲国产精品免费| 国产精品va无码一区二区三区| 日本一区二区高清| 又色又爽又黄视频| 狠狠噜噜久久| 日本10禁啪啪无遮挡免费一区二区| 粉嫩av一区二区三区四区五区| 欧美xxxx综合视频| 午夜福利视频一区二区| 在线免费观看日韩欧美| 制服丨自拍丨欧美丨动漫丨| 国产.欧美.日韩| 东京热加勒比无码少妇| 色狮一区二区三区四区视频| 成人av免费在线看| 波多视频一区| 久久精彩免费视频| 欧美 中文字幕| 欧美在线制服丝袜| 欧美黄色免费在线观看| 91麻豆国产福利精品| 亚洲图色中文字幕| 99精品视频免费观看视频| 日韩资源av在线| 日韩一级淫片| 国产精品久久久久久久久久久久久 | 日韩精品成人一区二区三区| 亚洲高清资源综合久久精品| 日韩中文在线| 国产成人拍精品视频午夜网站 | 久久综合久久色| 欧美在线视屏| 日韩中文字幕一区二区| 久久97久久97精品免视看秋霞| 国产欧美日韩精品专区| freexxx性亚洲精品| xxx成人少妇69| 欧洲一区av| 精品成人a区在线观看| 中文字幕网址在线| 欧美午夜精品在线| 国产黄色的视频| 国产农村妇女精品| 日韩少妇一区二区| 国产在线精品国自产拍免费| 波多野结衣作品集| 一本久道久久综合婷婷鲸鱼| 麻豆一区二区三区在线观看| 欧美日韩一二三四| 狠狠色狠狠色综合人人| 久久亚洲精精品中文字幕| 国产精品69精品一区二区三区| 草草视频在线| 欧美丰满少妇xxxxx| 麻豆电影在线播放| 伊人伊成久久人综合网小说| 色久视频在线播放| 精品久久一区二区三区| 精品久久久久久亚洲综合网站| 欧美色区777第一页| 好吊色在线视频| 精品福利免费观看| 免费中文字幕在线观看| 亚洲人成人一区二区在线观看 | 一区二区三区四区av| 国产精品免费在线视频| 欧美极品xxx| 国产真人做爰视频免费| 久久嫩草精品久久久久| 鲁大师私人影院在线观看| av资源站一区| 艳妇乳肉豪妇荡乳xxx| 岛国精品在线观看| 在线播放av网址| 成人免费观看男女羞羞视频| 91亚洲一线产区二线产区 | 一区二区三区少妇| 99久久99久久精品免费观看| 亚洲久久久久久| 99精品视频免费在线观看| 精品熟女一区二区三区| 北条麻妃国产九九精品视频| 少妇被狂c下部羞羞漫画| 成a人片国产精品| 99久久人妻精品免费二区| av欧美精品.com| 欧洲一级黄色片| 久久影院午夜片一区| 加勒比综合在线| 国产欧美日韩不卡免费| 极品尤物一区二区| 亚洲欧美区自拍先锋| 青娱乐在线视频免费观看| 亚洲大片免费看| 日韩不卡在线播放| 欧美亚洲日本一区| 99国产精品99| 亚洲国产91色在线| 精品亚洲综合| 日韩中文字幕视频| 丝袜美女在线观看| 26uuu另类亚洲欧美日本老年| 日韩免费小视频| 成人免费在线视频网站| 国产精品99久久免费观看| 欧美精彩一区二区三区| 99成人在线视频| 高清无码视频直接看| 亚洲综合欧美| 亚洲 国产 图片| 成人高清免费观看| 摸摸摸bbb毛毛毛片| 亚洲精品免费在线| 日本va欧美va国产激情| 欧美视频精品在线观看| 国产高清免费av| 亚洲欧美激情一区| а√中文在线8| 日韩av成人在线| 欧美黄色一级| 热re99久久精品国产99热| 久久精品国内一区二区三区水蜜桃| 黄网站欧美内射| 蜜臂av日日欢夜夜爽一区| 国产女主播在线播放| 国产欧美日韩精品在线| 香蕉视频一区二区| 欧美久久一区二区| 天堂av在线7| 久久综合色影院| 久久久一本精品| 国产91精品一区二区绿帽| 残酷重口调教一区二区| 久久国产精品网| 久草热8精品视频在线观看| 亚洲蜜桃精久久久久久久久久久久| 亚洲欧洲日本在线| 黄色片网站在线免费观看| 日韩一区二区在线看| 国产免费av高清在线| 久久免费视频观看| 国产精品**亚洲精品| 日韩欧美在线一区二区| 在线日韩视频| 一区二区三区国产好的精华液| 国产欧美一区二区三区沐欲| 成年人免费看毛片| 欧美大黄免费观看| 免费在线看黄网站| 日韩美女视频中文字幕| 精品无人区一区二区| 永久免费网站视频在线观看| 美腿丝袜在线亚洲一区| 亚洲国产av一区| 精品久久中文字幕| 人妻一区二区三区四区| 久久99精品国产99久久6尤物| 日韩成人在线电影| 亚洲电影网站| 日本欧美久久久久免费播放网| 精品无码人妻一区| 午夜精品成人在线视频| 老熟妻内射精品一区| 国产精品久久夜| 懂色av蜜臀av粉嫩av喷吹| 亚洲精品一区二三区不卡| 麻豆视频在线观看免费网站黄| 国产精品12| 亚洲国产黄色| 黄色免费看视频| 精品国产乱码久久久久久天美| 亚洲精选一区二区三区| 久久99精品久久久久久琪琪| 国产精品视频一区二区三区综合| 亚洲欧洲精品一区二区三区波多野1战4| 日本午夜精品视频在线观看| 日本少妇xxxxx| 欧美特级限制片免费在线观看| 99re在线视频| 国产有码一区二区| 小小影院久久| 久久久无码人妻精品无码| 亚洲国产日韩a在线播放| 手机看片国产1024| 2020国产精品视频| 欧美美乳视频| 日韩一级理论片| **欧美大码日韩| 性做久久久久久久| 午夜免费久久久久| 亚洲理论电影片| 9久久婷婷国产综合精品性色| 国产精品久久久久久久久久免费看 | 久久国产精品免费精品3p| 日本三级中文字幕在线观看| 国产成人精品亚洲777人妖| 亚洲精品午夜久久久久久久| 亚洲人成电影在线播放| 日韩黄色碟片| 国产成a人亚洲精v品在线观看| 91在线精品一区二区| 这里只有精品国产| 欧美成人一区二区三区电影| 欧美日韩看看2015永久免费| 无人在线观看的免费高清视频| 日韩毛片视频在线看| 开心激情综合网| 国产成人精品免费久久久久| 91精品综合| 亚洲国产精品va| 不卡的免费av| 日韩成人在线视频网站| 国产综合av| 特大黑人娇小亚洲女mp4| 91在线视频观看| 一区二区三区午夜| 国内精品视频久久| 色135综合网| 超碰97在线资源站| 欧美日韩国产片| 精品极品在线| 久久av秘一区二区三区|