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

时间:2016-10-14 08:08:06

标签: android android-fragments android-linearlayout classcastexception android-framelayout

我正在尝试设置2个帧布局的宽度和高度,这两个布局是2个片段的容器,两者都是线性布局的子元素。

然而每当我用

设置布局的宽度和高度时
frameLayout.setLayoutParams(new FrameLayout.LayoutParams(100,100);

导致类强制转换异常

  

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

4 个答案:

答案 0 :(得分:4)

使用这种方法...

DataAdapter.Update(pinakas_Table);

而不是你的方法......

AcceptChanges()

注意: - 当您的班级与其他班级不同时,会发生.setLayoutParams(new LinearLayout.LayoutParams(100,100); 问题,您想投...

答案 1 :(得分:3)

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

如上所述,您必须将参数设置为PARENT视图,而不是视图本身。你说FrameLayouts在 LinearLayouts 里面,所以你必须为它设置参数。

这就是你得到例外的原因

  

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

编译器正好告诉您,您无法将 FrameLayout参数强制转换为LinearLayout。

来自Android documentation

  

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

希望能更明确地澄清这个问题!

答案 2 :(得分:0)

异常报告为您提供了提示。看起来FrameLayout的父布局是LinearLayout。因此,您需要为FrameLayout设置LinearLayout参数。请尝试以下方法:

LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(your_width, your_height);
frameLayout.setLayoutParams(lp);

答案 3 :(得分:0)

您可以使用以下代码。“ gameframe”是frameLayout的名称。

ViewGroup.LayoutParams params = gameFrame.getLayoutParams();
params.width = New_width;
params.height = New_height;      
gameFrame.setLayoutParams(params);
相关问题