開發 Android 時,常遇到 Layout Editor(Design 視圖)中 Button 文字顯示靠左/靠上,但真機/模擬器運行卻完美居中。重啟 Android Studio 後有時又會自動修正。這究竟是什麼原因?如何在設計時也能看到真實效果?
現象分析
截圖顯示:Design 視圖中文字貼邊,但屬性面板已設 android:gravity="center"。運行截圖卻完全居中。
根本原因:Design 視圖渲染機制
- Layout Editor 使用獨立渲染引擎(基於 LayoutLib),與真機 Runtime(ART/Dalvik)不完全一致。
- 當預覽裝置尺寸過小(如截圖中 3.7" 480x800),渲染引擎為了顯示完整佈局,會壓縮控件內部 padding,導致文字視覺上「未居中」。
- 真機運行時,系統根據實際螢幕密度與控件測量規則正確計算 gravity,故表現正常。
解決方案
方法 1:調整預覽裝置尺寸(推薦)
在 Design 視圖工具列:
- 點擊裝置下拉框 → 選擇 Pixel 2 / Pixel 4 / 1080x1920 等大尺寸裝置。
- 或手動拖拽預覽框右下角放大畫布。
- 文字即會正確居中顯示。
方法 2:強制指定 gravity 並預覽
雖然已設 android:gravity="center",但可額外加上 android:layout_gravity="center"(針對父佈局),雙重保險。
方法 3:使用 Blueprint / 僅屬性檢查
切換至 Blueprint 模式(工具列圖標),僅查看結構邊框,避免文字渲染干擾;或直接信任 XML 屬性與真機測試結果。
最佳實踐建議
- 以真機/模擬器運行結果為準,Design 視圖僅供結構參考。
- 佈局 XML 中明確寫上
android:gravity="center",不要依賴預覽效果判斷。
- 若頻繁遇到渲染異常,嘗試 File → Invalidate Caches / Restart 清理緩存。
結論:這不是 Bug,而是預覽引擎在小尺寸裝置下的渲染妥協。調大預覽尺寸即可見真章。