2013-01-11 52 views
1

我有一個認爲是RelativeLayout的孩子,我試圖修改Java中的佈局參數。我得到了LayoutParams如下:RelativeLayout params AddRule不一致的工作?

RelativeLayout.LayoutParams dlp = (LayoutParams) dimBackground.getLayoutParams(); 

dlp.addRule(RelativeLayout.BELOW, currentTextView.getId()); 
//dlp.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); 

dimBackground.setLayoutParams(dlp); 

dlp.addRule(RelativeLayout.BELOW, currentTextView.getId());不改變dimBackground的位置,但如果我去掉下面的線,然後dimBackground將得到對齊父視圖的底部。

任何想法爲什麼第一條規則不起作用?

編輯:

至於建議,我想在XML中,仍然沒有運氣。下面是我的xml:

<RelativeLayout 
    android:id="@+id/dim_background_bottom" 
    android:layout_width="fill_parent" 
    android:layout_height="80dp" 
    android:layout_below="@+id/product_subtotal_row" 
    android:background="@color/gray_tint" 
    android:visibility="visible" /> 
+0

2個評論這兩個孩子:1)該行'dimBackground.setLayoutParams(DLP);'是不必要的,DLP已經是當前佈局上背景,你不必再次設置它。嘗試在XML上手動創建此佈局(僅用於測試),可能是現有規則與您添加的新規則衝突。 – Budius

+0

@Budius:'dimBackground.setLayoutParams(dlp);'將調用'requestLayout()',所以它是必需的。 – ben75

+1

你調用'requestLayout();'=] – Budius

回答

2

(因爲你沒有張貼關於您的佈局太多細節......這是很難給你一個明確的答案)。

我想你的currentTextView和你的dimBackground沒有相同的父親relativeLayout。 作爲mentionned在RelativeLayout DOC:

其中子項的位置可以相對於所描述的彼此或與母體的佈局。

所以,請仔細檢查currentTextViewdimBackground是相同RelativeLayout