TextView 總是對不齊 Drawable

前言

不曉得你們有沒有遇過這種狀況:

在 TextView 的屬性設定了 android:gravity="center_vertical"

結果一旁的 Drawable 卻沒有置中對齊,變成這樣:

TextView 總是對不齊 Drawable
無法垂直置中

TextView 總是對不齊 Drawable

這是因爲字型設計時,文字會有筆畫延伸高度:

上延筆畫(ascender)

下延筆畫(descender)

而 Android 會針對這兩個高度去畫額外的留白空間,

此時就會導致視覺上文字無法跟圖片垂直置中。

設計師看到就會訐譙你這跟他畫的 mockup 不一樣。

解決方法

設定 android:includeFontPadding="false" 這項屬性,
先來看看 Android 官方文件如何說明這項設定:

Leave enough room for ascenders and descenders instead of using the font ascent and descent strictly. (Normally true).

預設為 true,此時會連同額外的留白空間一起畫,

也就是說,當屬性設定為 false 時,

應可預期那些額外的留白會消失,

讓 TextView 的 Drawable 可以垂直置中對齊 。

垂直置中
設定屬性後可以垂直置中

參考資料

http://circlezine.com/2015/07/30/mix-match-01/

http://blog.justfont.com/2012/11/latin-type-design-1/

玩遊戲學廣告配置

叔怪
叔怪

前言

我對手機廣告的體驗一直不是很好,

其中最糟糕的體驗莫過於蘋果新聞的網頁,

一進去先跳個全版廣告不說,

有時還關不太掉,常因此而惱怒。

最近看到朋友在玩一款遊戲,名稱是:叔怪

由於題材很有趣,我也跟著玩了,

在遊玩的過程中,我發現我完全不排斥廣告,

甚至還有點享受廣告,覺得滿有意思的。 繼續閱讀 玩遊戲學廣告配置

[Android] ImageView的getWidth()跟getHeight()回傳值為0

這個問題的原因通常是View尚未準備好,

必須等到所有View都讀取完畢,return值才會不等於0。

該如何解決呢?有兩種作法:

一、等讀取完畢再去取值

在Activity覆寫下列函式:

二、使用ViewTreeObserver().OnPreDrawListener預先讀取數值