自定義View中關於文字的學習

2021-07-25 08:40:52 字數 405 閱讀 6903

如果要實現一串文字居中顯示在螢幕的正中心,只要確定繪製的baseline的座標即可, x座標比較簡單我們略過,看y座標

basey = (int) ((canvas.getheight() / 2) + 

((math.abs(textpaint.ascent()-math.abs(textpaint.descent()))) / 2));

如果y座標是螢幕的高度一半,會發現文字是偏向於螢幕上方的,所以我們需要往下移動,這個移動的距離可以這樣理解: 

因為我們需要下移,android螢幕下方對應y軸正方向,所以必定是加上一段距離,那麼到底是加多少呢? 如果沒有descent這段距離,那肯定是下移ascent的一半,但是現在有了descent,如果還這樣移動,字型就會偏下,所以下移距離應該是ascent-descent的距離的一半。

關於自定義view中的文字垂直居中的問題。

很多同學在剛剛接觸到自定義view 的時候就一陣頭大,本人也是菜鳥一枚,近些天辭職沒事情,所以在家裡研究自定義view,在研究圓形進度條的時候發現進度條中間的百分比文字始終沒有在圓所在的正中心,於是就各種搜尋,解決了文字居中的問題。接下來就把我的處理分享給大家。先來張圖 從別的地方copy過來的 這...

自定義view 文字自動換行

protected void ondraw canvas canvas 自動分割文字 param content 需要分割的文字 param p 畫筆,用來根據字型測量文字的寬度 param width 最大的可顯示畫素 一般為控制項的寬度 return 乙個字串陣列,儲存每行的文字 private...

自定義View之繪製文字

在初始化方法裡建立畫筆,設定畫筆顏色,不設定預設黑色 mtextpaint new paint mtextpaint.setcolor color.white 在ondraw方法裡繪製文字 canvas.drawtext text,float x,float y offset,mtextpaint ...