精品欧美一区二区三区在线观看 _久久久久国色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ù)棧公眾號

欧美一级淫片免费视频黄| 亚洲精品性视频| 国产欧美日韩精品专区| 国产乱子伦农村叉叉叉| 天堂在线观看av| 亚洲黄色高清| 日韩成人av在线| 女人天堂av手机在线| 同心难改在线观看| 久久激情久久| 国产一区二区日韩| 亚洲一区精品视频在线观看| 成人午夜在线影视| 激情成人综合网| 久久777国产线看观看精品| 2025中文字幕| 韩日毛片在线观看| 国产欧美日韩综合精品一区二区| 国产日韩换脸av一区在线观看| 免费看特级毛片| 一区二区三区免费在线看| 国产日韩欧美综合一区| 国产精品久久一区主播| 永久免费看片直接| 国产精品自在| 色国产精品一区在线观看| 一区二区三区四区欧美| 亚洲国产欧美另类| 视频一区欧美日韩| 久久这里只有精品99| 日本黄色免费观看| 日韩国产一二三区| 午夜在线电影亚洲一区| 色涩成人影视在线播放| 国产日韩免费视频| 亚洲欧美日韩国产| 久久亚洲精品毛片| www.四虎在线| 深夜视频一区二区| 亚洲欧美日韩中文播放| 欧美一级日本a级v片| 国产精品探花视频| 久久久精品网| 欧美激情免费看| 欧美 日韩 成人| 亚洲日本va| 欧美综合一区二区三区| 久久亚洲精品无码va白人极品| 成人全视频高清免费观看| 国产91精品免费| 国产精品视频网址| 日韩av电影网| 一区二区电影| 在线观看国产精品淫| 国产十八熟妇av成人一区| 亚洲国产91视频| 欧美日韩亚洲高清| 中文字幕在线中文字幕日亚韩一区| 色噜噜在线播放| 国产一本一道久久香蕉| 国产成人黄色av| 西西44rtwww国产精品| 一区二区三区网站| 在线电影中文日韩| 三年中国中文观看免费播放| 美女视频免费精品| 日韩免费成人网| 91小视频在线播放| 精品美女一区| 色噜噜久久综合| 欧美 日韩 国产 高清| 色呦呦视频在线观看| 国产精品白丝在线| 夜夜爽99久久国产综合精品女不卡| 视频一区二区三区在线看免费看| 国产91在线看| 91偷拍精品一区二区三区| 亚洲一区中文字幕永久在线| 日韩精品成人一区二区三区| 欧美一级大片视频| 久久久久久久久久影院| 99热精品在线观看| 97精品一区二区视频在线观看| 亚洲色偷偷综合亚洲av伊人| 日韩综合精品| 色av中文字幕一区| 后入内射无码人妻一区| 成人情趣视频网站| 日韩中文字幕国产精品| 欧美黑人国产人伦爽爽爽| 五月天视频在线观看| 福利一区二区免费视频| 欧美日韩情趣电影| 欧美伦理片在线观看| 成人深夜福利| 欧美美女一区二区| 中文字幕亚洲影院| 香蕉成人app| 精品视频在线免费看| www.久久久久久久久久久| 自拍偷拍亚洲| 日韩一区二区三区精品视频| 国产精品91av| 91久久久国产精品| 成人久久久精品国产乱码一区二区| 国产98色在线|日韩| 国产日本一区二区三区| 国产精品国产高清国产| 久久在线观看免费| 亚洲免费久久| 欧美另类tv| 五月激情综合网| 日韩国产欧美亚洲| 最新欧美电影| 色婷婷综合在线| 一级片视频免费观看| 日本在线视频一区二区三区| 亚洲精品美女免费| 波多野结衣欲乱| 黄色亚洲在线| 国产91色在线免费| 国产成a人亚洲精v品无码| 99精品在线观看视频| 亚洲精品在线视频观看| 麻豆av在线免费观看| 色综合av在线| 天堂网成人在线| 色婷婷久久久| 日韩亚洲一区二区| 日本三级午夜理伦三级三| 久久午夜激情| 91在线直播亚洲| 天堂中文资源在线观看| 国产精品乱人伦| 蜜桃传媒一区二区三区| 亚洲狼人在线| 亚洲免费av片| 毛片a片免费观看| 麻豆91精品| 大波视频国产精品久久| 欧美另类自拍| 亚洲激情六月丁香| 麻豆av免费在线| 日日夜夜亚洲| 日韩激情av在线播放| 欧美日韩国产精品综合| 青青草精品视频| 国产私拍一区| 超碰在线观看免费| 在线中文字幕不卡| 在线看黄色的网站| 亚洲色图88| 国产精品狠色婷| 人妻少妇精品无码专区久久| 国产精品久久久久永久免费观看| 777精品久无码人妻蜜桃| 一区二区三区在线免费看| 日韩一区二区欧美| 成人黄色片在线观看| 91在线小视频| 国产精品入口芒果| 日本亚州欧洲精品不卡| 俺去了亚洲欧美日韩| 色婷婷久久综合中文久久蜜桃av| 2017欧美狠狠色| 国产乱淫av片杨贵妃| 电影一区中文字幕| 最新69国产成人精品视频免费| 人人草在线观看| 91蜜桃免费观看视频| 韩国无码av片在线观看网站| 国产精品国产三级在线观看| 中文字幕精品在线视频| 台湾佬中文在线| 久久色成人在线| 91传媒久久久| 西瓜成人精品人成网站| 91精品国产99| 亚洲区小说区图片区| 精品久久久中文| 中文字幕丰满孑伦无码专区| 亚洲欧美日本日韩| 欧美日韩在线一二三| 成人小电影网站| 亚洲人成电影在线播放| 天堂网免费视频| 国产调教视频一区| 成人中文字幕av| 欧洲视频一区| 国产美女精彩久久| 久草免费在线观看| 日韩视频国产视频| 精品久久免费视频| 久久无码av三级| 99视频在线视频| 色喇叭免费久久综合| 91中文在线观看| 中文一区一区三区免费| 白白色在线观看| 亚洲国产第一页| 国产一级淫片a视频免费观看| 久久蜜桃香蕉精品一区二区三区| 自拍日韩亚洲一区在线| 偷拍精品福利视频导航| 国产福利精品视频| 国产免费视频在线| 日本高清不卡在线观看| 成人高潮免费视频| 成人污视频在线观看| 欧美视频第一区| 青青草91久久久久久久久| 91精品国产综合久久男男| 在线观看a级片| 日韩久久午夜影院| 怡红院男人的天堂| 亚洲综合激情另类小说区| 日韩精品卡通动漫网站| 麻豆国产精品一区二区三区| 欧美人与动牲交xxxxbbbb| 日韩欧美在线精品| 成人av在线网址| h片在线观看视频免费免费| 国产亚洲xxx| 国产成人久久精品77777综合 | 亚洲最大成人网站| 乱码第一页成人| 中文字幕第50页| 天天做夜夜做人人爱精品 | 欧美福利电影在线观看| 久久偷窥视频| 日本免费成人| 欧美亚洲另类制服自拍| 麻豆视频网站在线观看| 日韩成人av在线| 国产精品久久久国产盗摄| 一区二区不卡在线播放| 亚洲天堂最新地址| 99精品视频一区二区三区| xxx国产在线观看| 日韩一区二区三区免费看| 91在线|亚洲| 欧美女同一区| 一二美女精品欧洲| 欧美一区二区三区激情| 欧美视频在线一区| 欧美亚洲天堂网| 国产精品久久久久一区二区三区 | 色多多国产成人永久免费网站 | 欧美精三区欧美精三区| 亚洲欧美综合另类| 一区二区三区国产豹纹内裤在线| 谁有免费的黄色网址| 北岛玲一区二区三区四区| 女人高潮一级片| 18成人免费观看视频| 日韩免费中文专区| 日韩av黄色在线| 97超碰人人看人人| 91精品国产色综合久久不卡粉嫩| 日本精品一区二区三区在线| 91桃色在线| 欧美另类在线播放| 黄黄的网站在线观看| 丝袜情趣国产精品| 成人福利在线| 亚洲日韩第一页| 五月激情六月婷婷| 亚洲精品在线三区| 国产又黄又大又粗的视频| 欧美在线免费视屏| 精品国产乱子伦| 一本到高清视频免费精品| 国产午夜小视频| 亚洲午夜精品网| 欧美精品成人久久| 一区二区三区在线不卡| 五月天激情丁香| 亚洲视频一区二区免费在线观看| 国产美女网站视频| 中文字幕精品一区二区精品绿巨人 | 国产一区二区三区免费看| 中文字幕精品一区二区三区在线| 美洲天堂一区二卡三卡四卡视频 | 91久久在线| 免费观看国产精品视频| 午夜在线视频观看日韩17c| a√天堂在线观看| 亚洲综合国产| 免费观看成人网| 日本成人在线一区| 一道本在线免费视频| 久久成人av少妇免费| 午夜福利123| 国产一区二区三区高清播放| 黑人性生活视频| 国产91丝袜在线播放0| 超碰男人的天堂| 久久久国际精品| 人妻互换一区二区激情偷拍| 最新久久zyz资源站| 青青草原国产视频| 精品国产户外野外| 欧美高清69hd| 在线综合视频播放| 亚洲国产成人精品一区二区三区| 亚洲第一精品久久忘忧草社区| 亚洲av成人精品一区二区三区在线播放| 国产丝袜一区二区三区免费视频| 成人免费高清在线播放| 插插插亚洲综合网| 牛牛精品在线视频| 热久久这里只有| 欧美成人福利| 国产精品国产三级国产专区53 | 色素色在线综合| 一本大道伊人av久久综合| 日韩欧美国产wwwww| 三级理论午夜在线观看| 亚洲欧美国产视频| 国产综合在线观看| 九九视频直播综合网| 欧美极度另类| 91中文在线视频| 亚洲制服欧美另类| 激情视频小说图片| 久久一区中文字幕| 师生出轨h灌满了1v1| 国产欧美精品一区| 久久久精品99| 欧美午夜不卡在线观看免费| 亚洲成a人片77777精品| 亚洲国产精品电影在线观看| 91在线品视觉盛宴免费| 久久久久久久久久国产精品| 国产精品久久久久久吹潮| 国产精品中出一区二区三区| 欧美a级片视频| 欧美 丝袜 自拍 制服 另类 | 久久久久久久久久久免费视频| 国产一区啦啦啦在线观看| 加勒比一区二区| 亚洲国产另类精品专区| 97人人爽人人爽人人爽| 亚洲第一页自拍| 精品国产99久久久久久| 高清在线视频日韩欧美| 在线看欧美视频| 国产原创精品| 欧美 日韩 国产精品免费观看| 亚欧在线免费观看| 91女厕偷拍女厕偷拍高清| 青青草偷拍视频| 69久久夜色精品国产69蝌蚪网| 久草视频视频在线播放| 97av视频在线| 日韩城人网站| 欧美连裤袜在线视频| 亚洲精品123区| avtt中文字幕| 最新国产精品久久精品| 在线免费看av的网站| 国产亚洲美女精品久久久| 手机在线观看av网站| 亚洲xxx自由成熟| 久久精品国产大片免费观看| 精品久久久噜噜噜噜久久图片| 97成人超碰视| 日本三级视频在线| 精品亚洲一区二区三区在线观看 | 免费成人网www| 国产精品丝袜久久久久久消防器材| 久久综合九色综合久久久精品综合 | 欧美精品videossex88| 岛国成人av| 漂亮人妻被中出中文字幕| 国产欧美一区二区精品仙草咪| 亚洲一区中文字幕永久在线| 欧美黑人一级爽快片淫片高清| 一区二区三区在线免费看 | 91网站免费观看| 国内成人在线| 三级男人添奶爽爽爽视频| 在线看日本不卡| 欧美18一19xxx性| 不卡一区二区三区四区五区| 国产模特精品视频久久久久| 非洲一级黄色片| 欧美一区二区三区成人| 久久影院午夜精品| 视频一区在线免费观看| 国模无码大尺度一区二区三区| 日韩经典在线观看| 国产一区二区动漫| 91在线一区| 日韩中文字幕免费在线| 亚洲欧美激情在线| 男人的天堂在线免费视频| 成人亲热视频网站| 国产欧美91| 国产精品免费人成网站酒店|