我正在尝试设置2个帧布局的宽度和高度,这两个布局是2个片段的容器,两者都是线性布局的子元素。
然而每当我用
设置布局的宽度和高度时frameLayout.setLayoutParams(new FrameLayout.LayoutParams(100,100);
导致类强制转换异常
java.lang.ClassCastException:android.widget.FrameLayout $ LayoutParams无法强制转换为android.widget.LinearLayout $ LayoutParams
答案 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。
视图使用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);