android开发分享如何以编程方式删除在XML中定义的现有规则?

我有一个相对布局内包含的线性布局。 它在XML文件中设置在另一个线性布局的右侧(这可以正常工作)。 在某些情况下,我想在活动的onCreate期间更改布局的相对位置,所以我需要修改“右边”参数与另一个布局相关。 我试过这个:

RelativeLayout.LayoutParams layoutParams; layoutParams = (RelativeLayout.LayoutParams) linearLayoutToMove .getLayoutParams(); layoutParams.addRule(RelativeLayout.RIGHT_OF, R.id.new_ref_LinearLayout); 

但它不起作用:o(

任何线索?

    您不能删除规则,因为所有规则总是存储在固定大小的java数组中。 但是你可以设置一个规则为0 。 例如

     layoutParams.addRule(RelativeLayout.RIGHT_OF, 0); layoutParams.addRule(RelativeLayout.BELOW, R.id.new_ref_LinearLayout); 

    编辑 (感谢罗杰快速 ):

    从API级别17开始,类RelativeLayout.LayoutParams具有以下方法:

     public void removeRule(int verb) 

    因此,您可以使用以下代码行删除规则:

     layoutParams.removeRule(RelativeLayout.RIGHT_OF); 

    你将得到和'添加'零规则完全一样的结果:

     layoutParams.addRule(RelativeLayout.RIGHT_OF, 0); 

    我想你需要打电话给:

    relativeLayout.updateViewLayout(linearLayoutToMove, layoutParams);

    在更改LayoutParams之后。

    在回复编辑时,您可以使用以下命令创build新的LayoutParameters:

     LinearLayout.LayoutParams = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT); 

    然后添加你的新规则。 然后,使用前面提到的updateViewLayout()方法更新布局参数。

    将下面的代码添加到您现有的代码

    linearLayoutToMove.setLayoutParams(layoutParams)

    我认为这应该做的工作。 如果上述行不工作,请尝试在上面的行之后调用linearLayoutToMove.invalidate()

      以上就是android开发分享如何以编程方式删除在XML中定义的现有规则?相关内容,想了解更多android开发(异常处理)及android游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/addevelopment/515297.html

      (0)
      上一篇 2020年11月30日
      下一篇 2020年11月30日

      精彩推荐