JAVA中父类只有一种情况可以转换为子类,就是对象本身引用的就是子类,如:
public class Persion {} public class Man extends Persion {} Persion p = new Man(); Man m = (Man) p;
但是在Android中发现一个另类,一直想不清楚,希望高手指点一二!
// ViewGroup.LayoutParams public static class LayoutParams { ... } // ViewGroup.MarginLayoutParams: public static class MarginLayoutParams extends ViewGroup.LayoutParams { ... } // 然而这样是没有错的,child.getLayoutParams() 看了很久,都是返回 ViewGroup.LayoutParams的 MarginLayoutParams lp = (MarginLayoutParams) child.getLayoutParams();
为何?
解决方案
20
明显你的child 是添加在LinearLayout 或 FrameLayout等中的 它们的LayoutParameter 是继承与MarginLayoutParam
你可以换成ListView的子View就会出错
你可以换成ListView的子View就会出错
20
你看下 LinearLayout FrameLayout等 的LayoutParameter