关闭

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

标签: 控件Android
263人阅读 评论(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
查看评论

Android获得控件在屏幕中的绝对坐标

int[] location = new int[2] ; view.getLocationInWindow(location); //获取在当前窗口内的绝对坐标 view.getLocationOnScreen(location);//获取在整个屏幕内的绝对坐标 location [0]---&g...
  • ys743276112
  • ys743276112
  • 2016-05-13 16:27
  • 7042

Android 获取某控件在屏幕中的位置/坐标

getLocationOnScreen ,计算该视图在全局坐标系中的x,y值,(注意这个值是要从屏幕顶端算起,也就是索包括了通知栏的高度)//获取在当前屏幕内的绝对坐标  getLocationInWindow ,计算该视图在它所在的widnow的坐标x,y值,//获...
  • v587ge
  • v587ge
  • 2014-12-10 16:44
  • 2425

Winfrom 获取控件在屏幕的坐标

有时候控件包含在容器中是,仅去location只能得到相对于容器的坐标。 可以通过PointToScreen(控件.location);获得控件或者鼠标点击在屏幕中的坐标; 1. PointToScreen(e.Location) 2. PointToScreen(button1.Location...
  • wohhm
  • wohhm
  • 2016-12-20 19:09
  • 897

控件在父窗体或屏幕中的绝对坐标

做了一个控件,这个控件中鼠标移到某个Label上,出现一个panel,然后鼠标从label上移走或是从这个panel上移走该panel就消失。 这中间遇到了两个问题: 1、这个panel位置的问题。 用 this.FindForm().Controls.Add(panel);加该pa...
  • yysyangyangyangshan
  • yysyangyangyangshan
  • 2011-09-19 10:27
  • 11466

Android自定义控件热身——View的坐标位置和大小详解

转载请注明出处:http://blog.csdn.net/xiaohao0724/article/details/54965579 在自定义控件中我们经常会用到View位置的腾挪移动,今天就来和大家一块揭开View坐标位置的神秘面纱。 android中View的坐标系统 :屏幕的左上角View绘制区...
  • xiaohao0724
  • xiaohao0724
  • 2017-02-10 11:20
  • 2196

获取控件在屏幕中的坐标

1.核心函数 getLocationOnScreen //获取在当前屏幕内的绝对坐标 (注意这个值是要从屏幕顶端算起,包括了通知栏的高度) getLocationInWindow //获取在整个窗口内的绝对坐标,感觉安卓里面没有窗口的概念,测了几组数据和上边函数效果类似 getLeft , ge...
  • meetings
  • meetings
  • 2016-10-26 11:45
  • 1081

记忆Delphi窗体上控件的位置和大小

记忆Delphi窗体上控件的位置和大小   如果允许用户在运行时移动控件和调整控件大小,你必须确保在窗体关闭时保存控件的位置,窗体创建/加载时恢复每个控件的位置。以下是如何在INI文件中存储的每个窗体上的控件的左,上,宽度和高度属性。 接下来的两个程序WriteCon...
  • delphi308
  • delphi308
  • 2013-08-08 16:53
  • 1742

android动态设置控件的大小和位置

本次做的是机顶盒上视频播放器,当视频播放控件的大小先在xml文件设置完成。 当点击视频控件时,使视频为全屏播放,此时 RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(   ...
  • wocena
  • wocena
  • 2016-09-09 10:49
  • 1232

ios 获取控件相对屏幕的位置

UIWindow * window=[[[UIApplication sharedApplication] delegate] window];     CGRect rect=[btnSwitch convertRect: btnSwitch.bounds toView:wi...
  • LIUSIYU641
  • LIUSIYU641
  • 2014-08-21 18:02
  • 2787

获得控件的屏幕坐标

  在WPF控件(TreeviewControl)中弹出一个菜单,菜单的位置需要定位到鼠标点击的位置, 开始时使用了MouseButtonEventArgs的GetPosition方法, private static void Border_MouseLeftButtonDown...
  • courageously
  • courageously
  • 2015-11-02 16:27
  • 767
    个人资料
    • 访问:15065次
    • 积分:495
    • 等级:
    • 排名:千里之外
    • 原创:32篇
    • 转载:11篇
    • 译文:0篇
    • 评论:5条
    文章分类
    最新评论