instanceof比较两个布局会返回意外结果

时间:2017-04-23 22:33:26

标签: android android-layout

我正在创建一个应用程序,在我拖动一个阴影之后,接收片段应该在阴影被丢弃的绝对坐标处创建一个RelativeLayout。

我的问题在于动态创建的RelativeLayout的LayoutParams,它没有作为MarginLayoutParams的子类响应。

根据这个:RelativeLayout.LayoutParams扩展了ViewGroup.MarginLayoutParams,因此应该是后者的子类。

我的代码:

RelativeLayout relLay = new RelativeLayout(getView().getContext());
    if(relLay.getLayoutParams() instanceof ViewGroup.MarginLayoutParams){
        ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) relLay.getLayoutParams();
        params.setMargins(Math.round(coordX), Math.round(coordY), 0, 0);
        relLay.setLayoutParams(new ViewGroup.LayoutParams(ActionBar.LayoutParams.WRAP_CONTENT,ActionBar.LayoutParams.WRAP_CONTENT));
        RelativeLayout fragView = (RelativeLayout) getView().findViewById(R.id.RelativeStoryFaceFragment);
        relLay.addView(iView);
        fragView.addView(relLay);
    }

instanceof 运算符返回 false ,我希望它返回 true instanceof 不应该存在,但我正在使用它来避免在我弄清楚为什么我的代码出错之前会导致的丑陋崩溃。

我无法设置边距,除非我进行了投射,但如果 instanceof 返回false,则投射会崩溃。

我试图专注于有问题的代码,但如果有必要,很乐意包含更多上下文。

我可能会错过一些令人尴尬的事情,任何接受者?

0 个答案:

没有答案