您好,登錄后才能下訂單哦!
這篇文章主要講解了“Android如何解決字符對齊問題”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Android如何解決字符對齊問題”吧!
首先回顧一些基礎的東西。
1字節是8位,所以1字節能有256種組合,說到這個,就能聯系出ASCII碼,ASCII碼都熟吧,就是數字和字母啊這些。然后ASCII碼的定義的符號,是沒有到256的,這個也很容易理解,去看看ASCII碼的表就知道了。所以,ASCII碼中的符號,都能用1個字節表示。
但是你的漢字是沒辦法用256表示的,我們中華文化博大精深,不是區區256能容納得下的。所以漢字得用2個字節表示,甚至3個字節表示。然后emoji好像是要占3個字節還是4個字節得,這個我記得不太清了。而且不同的編碼占的也不同。
這個相信大家也有點了解,我們平時用輸入法的時候就能進行半角全角的切換。
簡單來說,全角em是指一個字符占用兩個標準字符位置,半角en是指一個字符占用一個標準字符的位置。注意這里說的是占多少的位置,和上面提的字節沒關系,不是說你2個字節就占2個位置,1個字節只占一個位置。
但是一般半角和圓角都是針對ASCII碼里面的符號的(這個我沒找到相應的概念,我是根據現象推導的)
所以先來看看直接設置半角和全角的效果
上面是半角,下面是全角,能明顯看出來,中文的半角和全角都是占了兩個標準字符的位置,而ASCII碼中的符號,在半角的情況下是占一個,在全角的情況下是占兩個。
漢字是這樣,但是我在找資料的時候看到一個挺有意思的場景。就是日文,因為編碼方式,會出現部分日文的半角效果和全角效果是不同的。
那說到這里,其實你就已經有一個概念了,數字中,每個數字在半角情況下都是占一個字符(我這里說占一個坑位可能會更好理解),默認變量輸出都是半角,那兩位數,就占兩個坑位。所以要讓1位數的顯示和兩位數的相同,讓1位數占兩個坑位不就行了嗎,把1位數轉成全角就行了。
看我這的效果,藍色的區域就是全角的效果,看得出是比之前好過一些,但也沒辦法完全等于兩個半角數字的寬度,還是差了點意思。
除了用半角全角的思路去處理,還有辦法嗎?當然有了,發揮想象力想想,要實現1位數和2位數對齊,我可以給1位數的兩邊加上空格,不就行了嗎,所以這空格也是有講究滴。
我們可以來看看Unicode中有哪些空格(只列舉部分):
U+0020:ASCII空格
U+00A0:不間斷空格
U+2002:EN空格
U+2003:EM空格
U+2004:?EM空格
U+2005:¼EM空格
U+2006:?EM空格
U+2007:數字空格
U+2009:窄空格
U+3000:文字空格
如果先了解了半角你就知道什么是en,什么是em,看這些的時候也會更有感覺。那這么多空格,我怎么知道哪個合適?那合不合適,試試不就知道了嗎,這不就和談女朋友一樣,去試試嘛
首先看到ASCII空格是合適的,會不會有人看到這里有答案就跑了 ,然后還有幾個看著也相近,我們可以單獨拿出來比一下。U+2004、U+2005和U+2009
發現都不合適,那這個代碼具體要怎么加呢,其實也很簡單,直接寫\u0020就行,比如我這里的布局就是這樣
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@color/blue" android:textColor="#000000" android:text="\u00206\u0020" android:textSize="26sp" />
上面都是通過編碼的方向去解決這個問題,那還有其它方式嗎?當然又有,其實一開始就有人想說了,用幾個textview去拼接,然后設置數字的textview固定寬度并且內容居中。
這當然可以。比如“倒計時30秒”這段文字,拆成3個textview,讓第二個textview固定寬度并且內容居中,也能實現這個效果,但是這實現方式也太......,所以需要去探索不同的方式去處理。
那繪制可以嗎,我不用textview,我自定義一個view然后畫上去,我自己畫的話能很好把控各種細節的處理。我倒是覺得這是一個好的主意。這是通過繪制的方式去解決這個問題。
所以從這里可以看出,其實解決這個問題的方式有很多,可以從不同的角度去處理。
感謝各位的閱讀,以上就是“Android如何解決字符對齊問題”的內容了,經過本文的學習后,相信大家對Android如何解決字符對齊問題這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。