执行以下操作时会出现异常:
findViewById(R.id.some_container).setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 50));
但是当我更改为new LinearLayout.LayoutParams
时就可以了。如果LinearLayout.LayoutParams
是ViewGroup.LayoutParams
的子代,那为什么我不能投射?
答案 0 :(得分:1)
所有LinearLayout
也是ViewGroup
,但并非所有ViewGroup
都是LinearLayout
。这就是为什么您不能将ViewGroup
投射到LinearLayout
您可以按照以下步骤从LinearLayout.LayoutParams
创建一个ViewGroup.LayoutParams
:
LinearLayout.LayoutParams params =
new LayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 50));
但是,简单的转换是不可能的。