程式碼動態建立 FrameLayout 並用 RelativeLayout.LayoutParams 加入視圖,設定 alignWithParent=true 但元件無法水平置中。
alignWithParent 已棄用,且僅影響相對於父容器邊緣的對齊,不包含置中規則。FrameLayout,但使用 RelativeLayout.LayoutParams,型別不匹配導致佈局參數失效。FrameLayout.LayoutParams 搭配 gravity:FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(
scrWidth, scrHeight, Gravity.CENTER); // 水平垂直置中
ShenGao.this.addContentView(mCharts[mSelected], lp);
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(scrWidth, scrHeight);
lp.addRule(RelativeLayout.CENTER_HORIZONTAL); // 水平置中
lp.addRule(RelativeLayout.CENTER_VERTICAL); // 垂直置中(可選)
addContentView 時,LayoutParams 必須與**父容器類型**對應,否則系統會忽略或拋出 ClassCastException。alignWithParent 為舊版 API,請改用 addRule(RelativeLayout.CENTER_IN_PARENT) 或 Gravity.CENTER。佈局參數型別匹配是動態 UI 正確渲染的前提。