水平 LinearLayout 中兩個固定寬高的 TextView,第二個設置 gravity="center" 和 textSize="20sp" 後,第一個 TextView 位置發生偏移;若第一個也設置 gravity 則偏移消失。
LinearLayout 默認 android:baselineAligned="true",會嘗試將所有子 View 的 基線 對齊。基線位置受 textSize、gravity、padding 影響。當子 View 基線不一致時,容器會上下平移子 View 以對齊基線,導致視覺位置偏移。
在 LinearLayout 上設置:
android:baselineAligned="false"
關閉基線對齊後,子 View 按 layout_gravity 或默認頂部對齊,不再相互影響。
baselineAligned 僅對 LinearLayout 生效,ConstraintLayout、RelativeLayout 無此行為。textSize、gravity、paddingBottom。View.getBaseline() 獲取基線位置調試。android:baselineAligned="false",按需在局部啟用。