「已注销」
2016-08-25 05:51
采纳率: 12.6%
浏览 1.7k

安卓 获取当前view的高度和屏幕高度作比较要怎么做

WindowManager wm = (WindowManager) context
.getSystemService(Context.WINDOW_SERVICE);
final int height = wm.getDefaultDisplay().getHeight();
int[] location = new int[2];
view.getLocationOnScreen(location);
final int y = location[1];

@Override
public void onClick(View v) {
if (y<(height/2)) {
System.out.println(456);//
}else if (y>(height/2)){
System.out.println(123);
}
}
这里是一个listview的view 想根据view在屏幕中的位置执行不同的方法,为什么打印出来的结果一直都是456呢?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • 叽哩叽哩鸡 2016-08-25 08:48

    可能是因为这段代码是运行在onCreate或者onResume中,界面尚未渲染完成就去获取宽高了,此时获取到的全部为0 。

    可以这样做:

    ViewTreeObserver observer = view.getViewTreeObserver();
    
    observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            // 在这里获取宽高并处理     
        }
    });
    
    点赞 打赏 评论

相关推荐 更多相似问题