如何动态设置android的FrameLayout的宽度和高度?

Jay*_*non 1 android classcastexception android-linearlayout android-fragments android-framelayout

我试图设置2个框架布局的宽度和高度,这是2个片段的容器,它们都是线性布局的子代。

但是,每当我使用

frameLayout.setLayoutParams(new FrameLayout.LayoutParams(100,100);
Run Code Online (Sandbox Code Playgroud)

它导致类强制转换异常

java.lang.ClassCastException:android.widget.FrameLayout $ LayoutParams无法转换为android.widget.LinearLayout $ LayoutParams

Fab*_*ioR 9

这个答案实际上是互补的,因为有些人已经解释了解决方案,但我想进一步澄清这个问题。

如上所述,您必须将参数设置为 PARENT 视图而不是视图本身。您说 FrameLayouts 在LinearLayouts 内,因此您必须为此设置参数。

这就是你得到异常的原因

java.lang.ClassCastException: android.widget.FrameLayout$LayoutParams 不能转换为 android.widget.LinearLayout$LayoutParams

编译器准确地告诉您,您不能将FrameLayout 参数转换为 LinearLayout。

Android 文档

LayoutParams 被视图用来告诉他们的父母他们想要如何布局。有关此类支持的所有子视图属性的列表,请参阅 ViewGroup 布局属性。

希望能进一步澄清问题!


sus*_*dlh 6

使用这种方法...

.setLayoutParams(new LinearLayout.LayoutParams(100,100);
Run Code Online (Sandbox Code Playgroud)

而不是你的方法....

.setLayoutParams(new FrameLayout.LayoutParams(100,100)
Run Code Online (Sandbox Code Playgroud)

注意:- ClassCastException当您的班级与其他班级不同时,您想投射...时会发生问题。