关闭

【Android】控件与屏幕的位置、坐标、大小

标签: 控件Android
129人阅读 评论(0) 收藏 举报
分类:

一、控件

        获得控件的宽、高:getWidth(),getHeight()。每次刷新有可能不一样。

       真实宽高:xxx.getLayoutParams().height。 固定值,比较准确。

        获得控件左边相对于父视图坐标原点(左上角)的距离:getLeft();(其他类似)  以左右为X轴,上下为Y轴

       getRight()=getLeft()+getWidth().getBottom()=getTop()+getHeight()

        设置控件大小:layout(int left, int top, int right, int bottom);


注意:必须在绘制完成后才能获取布局、控件的宽高!否则会为0或者负数。

解决方法:监听绘制事件

ViewTreeObserver vto = controlLayout.getViewTreeObserver();   
        vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
            @Override  
            public void onGlobalLayout() {
                controlLayout.getViewTreeObserver().removeGlobalOnLayoutListener(this);
                int controlLayoutWidth=controlLayout.getWidth();
                Log.i("menu", "controlLayoutWidth:"+controlLayoutWidth);
                mPathMenuLayout.setChildSize(controlLayoutWidth);
            }   
        });


二、屏幕

        DisplayMetrics dm = new DisplayMetrics();
        window.getWindowManager().getDefaultDisplay().getMetrics(dm); // 取得窗口属性
        获得屏幕的宽度:dm.widthPixels; // 窗口的宽度(以像素计算)

        获得屏幕的高度:dm.heightPixels; // 窗口的宽度

        获得标题栏的高度:window.findViewById(Window.ID_ANDROID_CONTENT).getTop();

三、触摸事件

        以屏幕左上角为坐标原点,获得当前触摸的坐标:event.getRawX()、event.getRawY()

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:8862次
    • 积分:410
    • 等级:
    • 排名:千里之外
    • 原创:30篇
    • 转载:10篇
    • 译文:0篇
    • 评论:5条
    文章分类
    最新评论