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

Android Java 動態設定 LinearLayout 背景顏色正確姿勢

     編輯:程式設計綜合問答

在 Android 使用 Java 程式碼動態設定 LinearLayout 背景顏色時,常見錯誤是 在 setContentView() 之前對 inflate 出來的 View 設定屬性,但隨後又呼叫 setContentView(R.layout.xxx) 覆蓋了佈局,導致設定失效。

錯誤程式碼分析

// ❌ 錯誤示範
LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
LinearLayout ll = (LinearLayout) inflater.inflate(R.layout.activity_main, null);
ll.setBackgroundColor(Color.BLACK); // 設定給暫時的 View
setContentView(R.layout.activity_main); // 重新 inflate,前面設定失效

正確寫法

// ✅ 正確示範
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main); // 先設定佈局
    
    LinearLayout ll = findViewById(R.id.your_linearlayout_id); // 從佈局取得實例
    ll.setBackgroundColor(Color.BLACK); // 對實際顯示的 View 設定
}

關鍵點總結

  1. 先 setContentView(),再 findViewById():確保操作的是螢幕上顯示的 View 實例。
  2. 佈局 XML 中的 LinearLayout 必須有 android:id 屬性。
  3. 若需在 inflate 時即設定屬性,請使用 setContentView(view) 直接傳入已設定好的 View,而非資源 ID。

延伸:動態建立 LinearLayout 並加入螢幕

LinearLayout ll = new LinearLayout(this);
ll.setOrientation(LinearLayout.VERTICAL);
ll.setBackgroundColor(Color.BLACK);
ll.setLayoutParams(new LinearLayout.LayoutParams(
    ViewGroup.LayoutParams.MATCH_PARENT,
    ViewGroup.LayoutParams.MATCH_PARENT));
setContentView(ll); // 直接將動態建立的 View 設為內容視圖
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved