RelativeLayout 正在返回 LinearLayout LayoutParams
RelativeLayout is returning LinearLayout LayoutParams
这是我的布局 xml 中的一个片段,它定义了我的 RelativeLayout。
<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);
然后当我尝试将高度从 0dp
更改为 wrap_content
时,我像这样获取布局参数:
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 参数对象?
getLayoutParams()
return根据其 parent 设置视图的当前 LayoutParameters。所以,buttonIRR_NFV
将 return RelativeLayout.LayoutParameter
.
这样想:getLayoutParams()
是您调用的一种方法,用于更改当前视图在其容器中的位置。如果您想修改其中一个 children 的布局方式,则必须改为获取其 LayoutParameters。
这是我的布局 xml 中的一个片段,它定义了我的 RelativeLayout。
<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);
然后当我尝试将高度从 0dp
更改为 wrap_content
时,我像这样获取布局参数:
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 参数对象?
getLayoutParams()
return根据其 parent 设置视图的当前 LayoutParameters。所以,buttonIRR_NFV
将 return RelativeLayout.LayoutParameter
.
这样想:getLayoutParams()
是您调用的一种方法,用于更改当前视图在其容器中的位置。如果您想修改其中一个 children 的布局方式,则必须改为获取其 LayoutParameters。