View的getTop()、getBottom()、getLeft()、getRight()

View的getTop()、getBottom()、getLeft()、getRight(),第1张

getTop():获取到的是view自身的顶边到其父布局顶边的距离。

getBottom():获取到的是view自身的顶边到其父布局顶边的距离。

getLeft():获取到的是view自身的顶边到其父布局顶边的距离。

getRight():获取到的view自身的顶边到其父布局顶边的距离。

ViewgetTop()、ViewgetLeft()、ViewgetBottom()、ViewgetRight();

ViewgetX()、ViewgetY();

ViewgetTranslationX()、ViewgetTranslationY();

ViewgetLocationOnScreen(int[] position);

ViewgetLocationInWindow(int[] position);

初学View时见到这个多个方法可能有点懵逼,下面我来根据编号一一介绍:

从上图可知,可根据View的这四个坐标来获取View的大小:

需要注意的是,这四个方法获取的坐标表示的是View原始状态时相对于父容器的坐标,对View进行平移 *** 作并不会改变着四个方法的返回值。

上面介绍的是View获取坐标的几种方法,但是在实际开发中不仅需要获取View的坐标,有时候还需要获取用户点击时的坐标。

MotionEvent

当重写View的onTouchEvent(MotionEvent event)方法时android会把触摸事件封装成MotionEvent成提供给开发者,MotionEvent提供了两组用于获取用户点击点坐标的方法:

getX()和getY()获取到的是相对于当前View左上角的坐标;

getRawX和getRawY()获取的是相对于屏幕左上角的坐标。

private void button1_Click(object sender, EventArgs e)

{

Delegate[] _List = GetObjectEventList(this, "EventClick", typeof(Control));

foreach (var item in _List)

{

itemDynamicInvoke(sender, e);

}

}

public static Delegate[] GetObjectEventList(object p_Object, string p_EventName, Type p_EventType)

{

PropertyInfo _PropertyInfo = p_ObjectGetType()GetProperty("Events", BindingFlagsInstance | BindingFlagsNonPublic);

if (_PropertyInfo != null)

{

object _EventList = _PropertyInfoGetValue(p_Object, null);

if (_EventList != null && _EventList is EventHandlerList)

{

EventHandlerList _List = (EventHandlerList)_EventList;

FieldInfo _FieldInfo = p_EventTypeGetField(p_EventName, BindingFlagsStatic | BindingFlagsNonPublic | BindingFlagsIgnoreCase);

if (_FieldInfo == null) return null;

Delegate _ObjectDelegate = _List[_FieldInfoGetValue(p_Object)];

if (_ObjectDelegate == null) return null;

return _ObjectDelegateGetInvocationList();

}

}

return null;

}

private void Form1_Click(object sender, EventArgs e)

{

MessageBoxShow("aaaaaaa");

}

给echarts图表设置 100% 宽高,父容器动态设置一个宽高时,echarts图表会占满不了父容器或者溢出父容器范围。

产生问题的原因是因为echarts图形只绘制一次,且绘制时自动获取父级大小填写宽度,然后改变容器宽高,导致echarts绑定的元素的宽度并不是最终的宽度,所以造成了获取到的结果并不是想要的。

解决办法是延迟加载,等父容器设置完宽高以后echarts再进行渲染:

以上就是关于View的getTop()、getBottom()、getLeft()、getRight()全部的内容,包括:View的getTop()、getBottom()、getLeft()、getRight()、C# 子容器触发父容器事件、echarts超出父容器范围和自适应的解决办法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9701365.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存