getlocationonscreen获取的位置为0

Android AUmaWSsSoi 2周前 (08-12) 59次浏览 0个评论
文章目录[隐藏]

getlocationonscreen获取的位置为0

昨天在写代码中,使用了view的getlocationonscreen的方法,来获取view的当前位置,代码如下:

runOnUiThread(new Runnable() {
    @Override
    public void run() {
        int[] location = new int[2];
        llContainer.getLocationOnScreen(location);
    }
});
用我的红米6pro测试,debug等等,发现location都是0,很是邪门,特地记录下这种奇葩的场景,在onCreate方法中直接获取的话,肯定是不行的,这个阶段view还没有测量绘制完成,但是在我加上runOnUiThread的逻辑后,这段代码应该是在view测量绘制完成后运行的,目前不清楚是哪块细节出现了bug(从结果显示来看,runOnUiThread执行的时候,view还未测量完毕),最后还是想了想,给post任务添加点延时时间,像这样的代码

llContainer.postDelayed(new Runnable() {
    @Override
    public void run() {
        int[] location = new int[2];
        llContainer.getLocationOnScreen(location);
    }
}, 100);
这样的代码,看起来就可以获取到view在屏幕中的位置,特意记录下如此奇葩的问题,下次得格外小心。

 

 

 

 


java问与答 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:http://javaexception.com/archives/187
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址