日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Android 實現文字左右對齊

瀏覽:24日期:2022-09-19 08:02:32

這里會涉及到實現原理的解析,如果只是需要使用輪子,請拉到最底下;

1. TextView 效果

首先,讓我們先來看一下TextView的顯示效果:

Android 實現文字左右對齊

中文情況下還好,但是英文情況下的顯示效果就不是很好看了,右邊會留了很長的空白,對于追求用戶體驗的,這樣的顯示效果肯定是不能滿足的;但是TextView內部也沒有提供API給我們,那么就只能自己來實現了;

2. 對齊原理

原理:將一行剩余的寬度平分給當前單詞的間距,這樣來達到左右對齊的效果;那么我們就有兩種實現方案:

(1)TextView繪制一行的計算原理簡單粗暴,就是計算這一行顯示不下一個單詞的時候,就進行回車換行;TextView已經手動給我們計算出了一行能顯示多少的字符,那么我們只需要通過計算剩余的寬度再進行繪制即可;

會存在問題:如果一行存在單詞較少的情況,就會出現間隔過大的問題;

比如

Android 實現文字左右對齊

(2)通過手動計算一行能顯示多少個字符,然后再計算剩余的寬度進行繪制;這樣只是比第一步多了個自己計算一行能顯示多少個字符的操作;

但是這樣也會存在問題:如果單詞存在中英文混合,或者非中文的情況,會很大概率出現換行時單詞被截斷的問題;

比如

Android 實現文字左右對齊

3. 最終方案

以上兩種方案都會存在缺陷,那這樣的話我們就得對出現的問題提出解決方案;

當前市場上有成熟的閱讀軟件,最常用的就是左右對齊的排版效果,來看看當前的閱讀軟件是怎么解決這些問題的;

先看一下微信讀書app的顯示效果:

Android 實現文字左右對齊

再看一下掌閱app的顯示效果:

Android 實現文字左右對齊

微信讀書和掌閱都是對這個過長的單詞進行截斷處理,然后使用“-”符號將這兩個截斷的單詞連接起來,再進行繪制時就不會出現上述兩種方案的問題;

那么最終方案就是:

通過手動計算一行能顯示多少個單詞,如果一行最后一個單詞顯示不下,則進行截斷處理,中文則不不存在該問題,這里針對非中文的處理;然后再根據剩余空間進行繪制;

那么有了方案之后,接下來看看具體要怎么實現;

4. 最終實現

(1)先遍歷當前頁面的字符,將中英文截取為一個個單詞,具體實現在getWordList(String text)方法里面;通過遍歷當前的字符,判斷如果為中文時,則為一個單詞,非中文時則通過遍歷該英文單詞進行拼接,最后拼成一個非中文單詞;

(2)通過遍歷當前的單詞,計算每一行要顯示的單詞集合,具體實現在getLineList(List<String> frontList)這個方法里面;遍歷單詞時,當添加最后一個單詞時,寬度已經超過一行顯示的距離,那么就判斷最后一個單詞是否為中文,是的話則添加到下一行,否則的話則進行截斷處理;

(3)通過第二步計算出來的每一行的單詞,計算剩余的距離進行繪制;

Android 實現文字左右對齊

5. 優化點

(1)代碼里修改了繪制的邏輯后,那么關于TextView的一些基礎屬性也要進行適配;比如布局的方向,可以使用TextView自帶的屬性來進行設置;通過android:gravity=''和android:textAlignment=''屬性來定義布局的文字方向,是居左還是居右邊,這兩個屬性都可以進行設置,textAlignment屬性的優先級比較高,如果同時設置的話,那么則以textAlignment屬性為準;

<com.example.testdemo1.XQJustifyTextViewandroid:layout_width='match_parent'android:layout_height='wrap_content'android:layout_margin='10dp'android:textSize='16sp'android:gravity='start'android:textAlignment='textStart'/>

(2)對于實現的英文單詞截斷的效果,還有優化的地方,經過一些小伙伴的提醒,發現還可以通過音節的進行拆分,再去研究了一波微信讀書和掌閱的截斷效果,發現確實是使用了音節來進行截斷,這樣展示效果就更加完美了;

后面研究了一波資料后,發現可以通過元音來進行截斷,英語單詞的元音有5個,分別是a,e,i,o,u; 那么就可以通過元音加一個輔音的規則來進行截斷;比如an,en之類的;這里只實現了一種規則來進行截斷,其他的規則過于復雜,暫時沒有引入;

看一下優化后的效果:

Android 實現文字左右對齊

GitHub源碼地址:

https://github.com/Amterson/AlginProject

到這里就結束啦。

以上就是Android 實現文字左右對齊的詳細內容,更多關于Android 文字左右對齊的資料請關注好吧啦網其它相關文章!

標簽: Android
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久中文字幕av| 日本久久一区| re久久精品视频| 啪啪亚洲精品| 伊人精品久久| 五月天激情综合网| 国产精品久久观看| 国产在线观看91一区二区三区 | 亚洲激情国产| 日韩成人亚洲| 国产精品原创| 日韩精品专区| 国产成人精品福利| 高清久久一区| 色偷偷偷在线视频播放| 老司机免费视频一区二区| 国产精品玖玖玖在线资源| 国产精品一区亚洲| 精品72久久久久中文字幕| 精品国产麻豆| 国产精品99久久精品| 久久精品超碰| 精品国产18久久久久久二百| 欧美激情日韩| 三上亚洲一区二区| 四虎影视精品| 蜜乳av另类精品一区二区| 日韩一级不卡| 久久国产日韩欧美精品| 国产美女视频一区二区| 日韩av有码| 欧美在线资源| 国产亚洲久久| 久久久亚洲一区| 免费视频久久| 美腿丝袜在线亚洲一区| 精品久久一区| 欧美91精品| 亚州精品视频| 欧美成a人片免费观看久久五月天| bbw在线视频| 亚洲麻豆一区| 国产一区2区| 久久成人精品| 国际精品欧美精品| 亚洲深爱激情| 97精品在线| 日本色综合中文字幕| 91精品蜜臀一区二区三区在线| 亚洲一区二区三区中文字幕在线观看| 欧美黑人巨大videos精品| 国产99亚洲| 日韩av不卡一区二区| 久久中文字幕二区| 你懂的国产精品永久在线| av不卡免费看| 精品美女在线视频| 日韩中文字幕亚洲一区二区va在线| 久久精品资源| 91九色综合| 麻豆精品91| 日韩不卡在线| 国产精品黑丝在线播放| 国产乱码精品一区二区三区四区 | 欧美日韩水蜜桃| 成人午夜网址| 国产精品一区毛片| 亚洲精品无吗| 免费的成人av| 日韩一区二区久久| 久久久久欧美精品| 色婷婷综合网| 成人亚洲精品| 精品国产免费人成网站| 欧美激情精品| 午夜电影一区| 亚洲精品在线国产| 日本成人手机在线| 老牛影视一区二区三区| 欧美激情另类| 欧美日韩一区二区三区四区在线观看 | 欧美精品三级在线| 国产精选一区| 日本色综合中文字幕| 亚洲三级毛片| 国产欧美日韩| 精品视频国内| 国产 日韩 欧美 综合 一区 | 国产字幕视频一区二区| 91精品99| 乱人伦精品视频在线观看| 精品不卡一区| 久久久人人人| 免费国产自线拍一欧美视频| 亚洲欧美日韩国产一区二区| 在线亚洲国产精品网站| 日本成人在线一区| 国产aⅴ精品一区二区四区| 久久中文字幕av一区二区不卡| 鲁大师成人一区二区三区| 亚洲欧美日本国产| 国产精品九九| 国产综合婷婷| 国产精品天天看天天狠| 日韩欧美综合| 亚洲有吗中文字幕| 成人在线丰满少妇av| 在线综合亚洲| 精品一区二区三区中文字幕视频| 久久视频精品| 国产毛片精品久久| 欧美日韩水蜜桃| 欧美一级网址| 欧美高清不卡| 国产精品流白浆在线观看| 91精品二区| 日韩三级精品| 天堂中文在线播放| 国产麻豆一区二区三区| 国产模特精品视频久久久久| 国产精品久久久久毛片大屁完整版| 欧美精品一区二区久久| 精品国产a一区二区三区v免费| 午夜精品亚洲| 日韩精品电影| 精品视频久久| 欧美伊人影院| 亚洲欧美视频| 亚洲午夜精品久久久久久app| 国产精品一区二区三区美女| 日韩网站在线| 欧美激情精品| 日韩国产在线一| 亚洲欧美日本日韩| 欧美午夜精品一区二区三区电影| 精品一区二区三区免费看| 日本不卡的三区四区五区| 午夜亚洲精品| 亚洲综合欧美| 尤物网精品视频| 亚洲黄页一区| 午夜久久美女| 首页国产欧美久久| 久久一区国产| 麻豆精品视频在线观看| 国产欧美一区二区精品久久久 | 亚洲视频国产精品| 欧美特黄一区| 亚洲一区欧美二区| 亚洲欧美视频| 亚洲另类视频| 亚洲精品国产日韩| 911精品国产| 精品久久国产一区| 神马久久午夜| 99热精品在线| 中文无码久久精品| 国产日韩欧美一区二区三区 | 人人精品人人爱| 日韩黄色av| 国产精品成人a在线观看| 亚洲不卡系列| 亚洲综合不卡| 91福利精品在线观看| 国产精品一区免费在线| 国产精品yjizz视频网| 午夜精品网站| 久久精品99久久久| 91看片一区| 亚洲91网站| 伊人网在线播放| 激情综合自拍| 日韩 欧美一区二区三区| 国产精品不卡| 免费不卡在线观看| 国内精品亚洲| 蜜桃av一区二区三区电影| 国产精品白丝久久av网站| 国产精品xvideos88| 成人av二区| 午夜精品成人av| 欧美日韩一区二区三区不卡视频 | 国产日韩免费| 亚洲精品.com| 国产精品一区二区av日韩在线| 久久中文视频| 精品三级av| 中文字幕一区二区三区日韩精品| 精品91福利视频| 亚洲精品进入| 一本一道久久a久久精品蜜桃| 欧美国产视频| 日韩国产一二三区| 亚洲一区国产一区| av高清不卡| 精品久久精品| 国产精品免费99久久久| 日韩精品91| 精品国产一级| 亚洲免费专区|