2015-06-07 101 views
4

以下是我的佈局xml中定義我的RelativeLayout的片段。RelativeLayout正在返回LinearLayout LayoutParams

<RelativeLayout 
    android:id="@+id/npvirrButtons" 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    > 
    <Button 
     android:id="@+id/buttonNPVLabel" 
     android:layout_marginLeft="20dp" 
     android:layout_alignParentLeft="true" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     /> 

    <Button 
     android:id="@+id/buttonIRR_NFV" 
     android:layout_marginLeft="20dp" 
     android:layout_marginRight="20dp" 
     android:layout_alignParentRight="true" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     /> 

</RelativeLayout> 

這裏是我保存對它的引用。

this.npvirrButtons = (RelativeLayout)this.findViewById(R.id.npvirrButtons); 

再後來,當我嘗試改變高度從0dpwrap_content,我搶佈局PARAMS這樣的:

RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)this.npvirrButtons.getLayoutParams(); 

,但我得到拋出的異常:

java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams cannot be cast to android.widget.RelativeLayout$LayoutParams 
    at com.mydomain.myapp.MyActivity.calculateIRR(MyActivity.java:564) 

爲什麼我的RelativeLayout返回一個LinearLayout params對象?

+0

嘗試在刪除gen&bin文件夾後重新運行項目 –

回答

5

getLayoutParams()根據其父項返回視圖的當前LayoutParameters。所以,buttonIRR_NFV將返回RelativeLayout.LayoutParameter

想想這樣:getLayoutParams()是您調用的方法來改變當前視圖在其容器上的位置。如果您想修改佈局其中一個孩子的方式,則必須改爲使用LayoutParameters。

相關問題