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/

Firebase Cloud Messaging 在背景收訊息

前陣子將推播服務換成 Firebase,

但發現一個問題:只有在前景時才收得到訊息。

官方文件指出:

App behavior when receiving messages that include both notification and data payloads depends on whether the app is in the background or the foreground—essentially, whether or not it is active at the time of receipt.

  • When in the foreground, your app receives a message object with both payloads available.
  • When in the background, apps receive the notification payload in the notification tray, and only handle the data payload when the user taps on the notification.

因此,想在背景收到通知,必須傳送 data message。

使用方式為:

如此一來,即可在背景收到訊息。

抱石初體驗

前言

偶然查到新莊有間抱石場:

Stone Bouldering Gym

因為有懼高症,遲遲不敢嘗試攀岩運動,

但簡介提及高度莫約四至六公尺,

感覺是可以接受的高度,就去挑戰了。

抱石

抱石是攀岩的一種型態,但是與多數攀登型態最大不同處是抱石不用繩索等器材確保,因而攀爬高度不高,以確保攀登者墜落無危險。 — 維基百科

簡單來說就是不需繩索的攀岩運動,

在攀岩牆下會有大型軟墊避免墜落傷害。 閱讀全文 抱石初體驗

DFRobot Arduino 入門套件開箱

前言

去年一直在嚷著要學 Arduino,但遲遲未去接觸;

前陣子熱衷養魚時突然發想:

如果可以遠端監測、控制我的魚缸就好了。

而 Arduino 似乎可以滿足我的需求,

所以就手滑買了一組入門套件。

Arduino 套件百家爭鳴,

選擇 DFRobot 是看上它的教學文件非常詳細,

有生產高品質的各種套件,

且有中文 (英文苦手),加上社群規模也夠大,

而入門組合中的盒子它最漂亮,就是它了。

簡介

Arduino
外盒

閱讀全文 DFRobot Arduino 入門套件開箱

設缸紀錄 (一)

前言

EcoQube C 的開箱文是一月發表的,

但我遲遲沒有買魚,一直拖到了二月中旬才入手;

其實我已打定要養河豚,只是有些前置作業必須先處理。

水質

魚缸是個半封閉的生態系,

裡面的活體需要乾淨、穩定的水質,

穩定的水質則依賴處理毒物的細菌。

(但這缸還有植物可以幫忙吸收毒物就是了) 閱讀全文 設缸紀錄 (一)

EcoQube C 開箱

前言

去年年初看到了香草與魚的廣告,

便對魚菜共生這個概念感到好奇,

由於魚缸形狀及容量的因素,遲遲無法下手。

到了五月時,在 Kickstarter 上看到 EcoQube C 在募資,

這項產品較貼近我心中魚缸的形象,

於是參與了募資計畫;

最近收到了魚缸,特此紀錄。 閱讀全文 EcoQube C 開箱

玩遊戲學廣告配置

叔怪
叔怪

前言

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

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

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

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

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

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

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

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

恢復運動習慣後

前言

我在2014年7月中斷了一週三次的重量訓練,

直到2015年4月底才開始恢復運動習慣,

這段時間,我體重少了十公斤(62 -> 52 KG);

長時間使用電腦的生活型態,

讓我下背、肩頸開始感到痠痛,開始容易疲倦,

身體趨向虛弱,精神狀況則是萎靡不振,

明顯不如持續運動時的開朗及自信。

契機

2015年四月我開始在新公司上班,

公司規定員工每週至少要在公司上兩次運動課;

或許是去年有運動習慣的關係,

事前我很輕視公司為女性設計的運動課程,

我認為自己可以輕易地駕馭課程內容──

而我第二次上課就體力不支而在旁休息了半堂課時間,

之後也發生過幾次在課程中兩眼昏花,

或是臉色、嘴唇發白而驚動了教練。 閱讀全文 恢復運動習慣後

Google Compute Engine 使用心得

前言

原本使用的主機是一年幾百塊的 share hosting,

用了兩年多,也沒出現甚麼太嚴重的問題,

我的需求就是架個部落格,

以及跑幾支簡單的網路程式。

──直到某天我將蔬果行情站改版後,

才驚覺大事不妙。

引爆點

早期版本的 app 是直接在 client 端爬官方網站的資料回來,

某次改版後,改串自己後端的 API 來取資料,

因為 loading 從原本的官方網站轉移到我的 server 上,

導致偶爾會出現 500 Internal Server Error,

以及 MySQL Server is gone away 的情況。

原本就有在關注 VPS 的資訊,

遇到上述情形後,二話不說直接搬家。

(因為已經有 app 的使用者在回報資訊上幹譙我了……XD) 閱讀全文 Google Compute Engine 使用心得