尝试获取 RelativeLayout.LayoutParams 时不断出错
Keep on getting error when trying to get RelativeLayout.LayoutParams
我有这个看法
<ScrollView ...>
<RelativeLayout ...>
我定义了 RelativeLayout,我想在 Java 中操作它,就像这样
ViewGroup parent = (ViewGroup) rootView
.findViewById(R.id.rltv_layout);
我想改变亲戚的身高,所以我想我会使用
RelativeLayout.LayoutParams lpp = (RelativeLayout.LayoutParams) parent.getLayoutParams();
lpp.height = lpp.height + someHeights;
parent.setLayoutParams(lp);
然后出错了,LogCat说
05-18 14:01:49.829: E/AndroidRuntime(12856): java.lang.ClassCastException:
android.widget.FrameLayout$LayoutParams cannot be cast
to android.widget.RelativeLayout$LayoutParams
所以我改成了
FrameLayout.LayoutParams lpp = (FrameLayout.LayoutParams) parent.getLayoutParams();
然后出错了,LogCat说
05-18 14:06:16.297: E/AndroidRuntime(13183): java.lang.ClassCastException:
android.widget.RelativeLayout$LayoutParams cannot be cast
to android.widget.FrameLayout$LayoutParams
那么它想要的是什么?
此外,据我所知,LayoutParams 类型取决于其父级的类型,而不是视图本身。有一次我尝试了 ScrollView.LayoutParams
,但仍然遇到同样的错误。
由于您只使用 lpp.height
,因此直接使用 android.view.ViewGroup.LayoutParams
就足够了。无需铸造。
如您所说,LayoutParams 取决于父视图。但是 ScrollView
没有定义自己的子类。这就是你找到 FrameLayout.LayoutParams
.
的原因
对于第二个转换问题,您可能已将 LayoutParams
设置为 RelativeLayout.LayoutParams
和 parent.setLayoutParams(lp)
。
我有这个看法
<ScrollView ...>
<RelativeLayout ...>
我定义了 RelativeLayout,我想在 Java 中操作它,就像这样
ViewGroup parent = (ViewGroup) rootView
.findViewById(R.id.rltv_layout);
我想改变亲戚的身高,所以我想我会使用
RelativeLayout.LayoutParams lpp = (RelativeLayout.LayoutParams) parent.getLayoutParams();
lpp.height = lpp.height + someHeights;
parent.setLayoutParams(lp);
然后出错了,LogCat说
05-18 14:01:49.829: E/AndroidRuntime(12856): java.lang.ClassCastException:
android.widget.FrameLayout$LayoutParams cannot be cast
to android.widget.RelativeLayout$LayoutParams
所以我改成了
FrameLayout.LayoutParams lpp = (FrameLayout.LayoutParams) parent.getLayoutParams();
然后出错了,LogCat说
05-18 14:06:16.297: E/AndroidRuntime(13183): java.lang.ClassCastException:
android.widget.RelativeLayout$LayoutParams cannot be cast
to android.widget.FrameLayout$LayoutParams
那么它想要的是什么?
此外,据我所知,LayoutParams 类型取决于其父级的类型,而不是视图本身。有一次我尝试了 ScrollView.LayoutParams
,但仍然遇到同样的错误。
由于您只使用 lpp.height
,因此直接使用 android.view.ViewGroup.LayoutParams
就足够了。无需铸造。
如您所说,LayoutParams 取决于父视图。但是 ScrollView
没有定义自己的子类。这就是你找到 FrameLayout.LayoutParams
.
对于第二个转换问题,您可能已将 LayoutParams
设置为 RelativeLayout.LayoutParams
和 parent.setLayoutParams(lp)
。