首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android 動態新增 ImageView 至 RelativeLayout:布局參數規則與重疊問題

     編輯:程式設計綜合問答

問題

動態新增多個 ImageView 到 RelativeLayout,後來者覆蓋前者,因預設都置於左上角。

解決:正確設定 LayoutParams 規則

RelativeLayout container = findViewById(R.id.container);
int prevId = 0; // 用於 RIGHT_OF 參考

for (int i = 0; i < count; i++) {
    ImageView iv = new ImageView(this);
    iv.setImageResource(R.drawable.icon);
    int id = View.generateViewId();
    iv.setId(id);

    RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
        LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

    if (prevId != 0) {
        lp.addRule(RelativeLayout.RIGHT_OF, prevId); // 放在前一個右側
        // 或 lp.addRule(RelativeLayout.BELOW, prevId); // 放在下方
    } else {
        lp.addRule(RelativeLayout.ALIGN_PARENT_LEFT); // 第一個靠左
        lp.addRule(RelativeLayout.ALIGN_PARENT_TOP);
    }

    container.addView(iv, lp);
    prevId = id; // 更新參考
}

常用 RelativeLayout 規則

規則常數效果
RIGHT_OF置於指定 ID 視圖右側
LEFT_OF置於指定 ID 視圖左側
BELOW置於指定 ID 視圖下方
ABOVE置於指定 ID 視圖上方
ALIGN_PARENT_LEFT/RIGHT/TOP/BOTTOM靠父佈局邊緣
CENTER_IN_PARENT置中於父佈局

替代方案:使用 LinearLayout 或 FlowLayout

  • LinearLayout(horizontal)自動依序排列,無需手動管理規則。
  • 第三方 FlowLayout 支援自動換行,適合標籤雲、圖片牆。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved