美文网首页
设置控件在父布局中的相对位置遇到的坑

设置控件在父布局中的相对位置遇到的坑

作者: JJD0501 | 来源:发表于2018-08-31 17:59 被阅读0次

    前几天在做一个根据重力感应旋转控件到底部的功能点,原先项目里有旋转控件的方法,但只能在原地旋转,所以我要做的就是使用原有控件可旋转的方法的基础上,增加根据重力感应设置控件到屏幕底部的功能。

    timerLl是一个LinerLayout,它的父布局是RelativeLayout
    最一开始的做法是
    RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) timerLl.getLayoutParams();
    lp.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
    lp.addRule(RelativeLayout.CENTER_HORIZONTAL);
    timerLl.setLayoutParams(lp);

    微信截图_1.png

    控件就始终在这个位置旋转,不会跟着转手机来到底部来。
    经过大半天的尝试,最终发现,横屏时候的上下左右,才是对应于父布局的上下左右
    所以,竖屏的时候相当于在父布局的右侧(在代码case里是Progress_Rotation_90),横屏的时候相当于在父布局底部(在代码case里是Progress_Rotation_0),手机底部按钮在左侧的横屏方式相当于在父布局的顶部(在代码case里是Progress_Rotation_180),手机倒立的竖屏相当于相对于父布局的左侧(在代码case里是Progress_Rotation_270)。
    所以根据这个思路,我动态的改变相对于父布局的位置的center方式成功实现了根据重力感应,每次都在当前屏幕的底部的功能,代码见下图,我把它抽离出来成为一个方法,传入参数来控制


    微信截图_2.png

    对了,在每次设置,也就是addRule之前,应该先remove之前可能add的Rule


    微信截图_3.png

    相关文章

      网友评论

          本文标题:设置控件在父布局中的相对位置遇到的坑

          本文链接:https://www.haomeiwen.com/subject/fvlewftx.html