获取控件大小和设置调整控件的位置XY示例

网上很多人对设置控件的位置都使用view.setPadding(left, top, right, bottom) ,其实这玩意很差劲,它是设置自己本身位置的偏移,我们很少需要这种效果,我需要的设置控件相对屏幕左上角的X 、Y位置。众里寻他千百度,蓦然回首,那人却在灯火阑珊处!

复制代码 代码如下:

import android.view.View;

import android.view.ViewGroup.MarginLayoutParams;

import android.widget.RelativeLayout;

/*

* 获取、设置控件信息

*/

public class WidgetController {

/*

* 获取控件宽

*/

public static int getWidth(View view)

{

int w = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);

int h = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);

view.measure(w, h);

return (view.getMeasuredWidth());

}

/*

* 获取控件高

*/

public static int getHeight(View view)

{

int w = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);

int h = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);

view.measure(w, h);

return (view.getMeasuredHeight());

}

/*

* 设置控件所在的位置X,并且不改变宽高,

* X为绝对位置,此时Y可能归0

*/

public static void setLayoutX(View view,int x)

{

MarginLayoutParams margin=new MarginLayoutParams(view.getLayoutParams());

margin.setMargins(x,margin.topMargin, x+margin.width, margin.bottomMargin);

RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(margin);

view.setLayoutParams(layoutParams);

}

/*

* 设置控件所在的位置Y,并且不改变宽高,

* Y为绝对位置,此时X可能归0

*/

public static void setLayoutY(View view,int y)

{

MarginLayoutParams margin=new MarginLayoutParams(view.getLayoutParams());

margin.setMargins(margin.leftMargin,y, margin.rightMargin, y+margin.height);

RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(margin);

view.setLayoutParams(layoutParams);

}

/*

* 设置控件所在的位置YY,并且不改变宽高,

* XY为绝对位置

*/

public static void setLayout(View view,int x,int y)

{

MarginLayoutParams margin=new MarginLayoutParams(view.getLayoutParams());

margin.setMargins(x,y, x+margin.width, y+margin.height);

RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(margin);

view.setLayoutParams(layoutParams);

}

}

时间: 2024-09-26 09:09:25

获取控件大小和设置调整控件的位置XY示例的相关文章

winform-C# Winform 动态Add用户控件,比设置用户控件Visible的效率高还是低?

问题描述 C# Winform 动态Add用户控件,比设置用户控件Visible的效率高还是低? 如何题:C# Winform 动态Add用户控件,比设置用户控件Visible的效率高还是低? 解决方案 肯定相关代码要比设置是否可见复杂,但是动态添加相对灵活性要高,而不用有用没用的都摆在那 解决方案二: C#的Winform中使用用户控件C# WinForm中添加用户控件 解决方案三: 1.动态Add用户控件,是窗体加载后,重新绘制加载用户控件,有可能出现界面闪烁刷新效果: 2.设置用户控件Vi

C# Winform 动态Add用户控件,比设置用户控件Visible的效率高还是低?

问题描述 如何题:C#Winform动态Add用户控件,比设置用户控件Visible的效率高还是低?个人分析:1.动态Add用户控件,是窗体加载后,重新绘制加载用户控件,有可能出现界面闪烁刷新效果:2.设置用户控件Visible,是窗口加载时,所有用户控件自动绘制,不存在界面闪烁,但是第一次加载窗口有可能比较慢,主要看机器显卡配置不知,以上分析是否有误,请各位一起探讨一下... 解决方案 解决方案二:设置visible为false基本不消耗显卡解决方案三:引用1楼liaoyibiao1987的回

浅谈MFC 改变控件大小和位置_C 语言

用CWnd类的函数MoveWindow()或SetWindowPos()可以改变控件的大小和位置. void MoveWindow(int x,int y,int nWidth,int nHeight); void MoveWindow(LPCRECT lpRect); 第一种用法需给出控件新的坐标和宽度.高度: 第二种用法给出存放位置的CRect对象: 例: CWnd *pWnd; pWnd = GetDlgItem( IDC_EDIT1 ); //获取控件指针,IDC_EDIT1为控件ID号

wpf-WPF中,日历控件的大小或者日期选择控件的大小怎么调整?

问题描述 WPF中,日历控件的大小或者日期选择控件的大小怎么调整? 在网上看了不少资料,貌似没有一个很好的答案. 虽然这两个控件都有width和height属性,但是设置之后应该是这个控件所占的控件的大小发生了变化,实际上显示的内容并没有发生变化. 似乎说可以写样式可以实现,但是挺麻烦的,不知道大家有没有遇到过这样的问题,怎么修改这两个控件实际显示的大小?

统一的获取,设置UI控件值

在编写WebForm或WinForm程序时,我们经常需要编写很多获取,设置UI控件值代码.这确实 是一件重复,麻烦而又容易出错的工作.所以我们应该将这个工作交给计算机去做解放我们的 劳动力.一般来说UI上的控件都是和我们的EntityObject相对应的,所以利用反射将 EntityObject中属性值赋给控件或通过控件填充EntityObject是非常方便的.但是要想让计算 机自动干活就要顶一个规则,就是控件ID = 前缀 + 属性名.比如我们有一个User类其定义如 下: class Use

基于MFC的ActiveX控件,如何实现运行时,用户可动态调整控件大小和位置?

问题描述 基于MFC的ActiveX控件,如何实现运行时,用户可动态调整控件大小和位置? 基于MFC的ActiveX控件,如何实现运行时,用户可动态调整控件大小和位置? 请大神们帮帮忙.在线等. 解决方案 调整控件大小是宿主程序的事,不关activex 即便不写任何代码,都是可以调整大小的,只是如果你不写代码,调整控件大小,里面的内容不会跟着缩放,而是保持不变,如果尺寸变小,右下角的东西会看不见. 解决方案二: 在OnSize中写可动态调整控件大小和位置的代码 解决方案三: 有没有相关的列子可供

wpf-WPF怎么在后台设置 FrameworkElementFactory中的控件大小或者右对齐

问题描述 WPF怎么在后台设置 FrameworkElementFactory中的控件大小或者右对齐 Dim objTemColumn As New DataGridTemplateColumn Dim objTem As New DataTemplate Dim objFactory = New FrameworkElementFactory(GetType(StackPanel)) objFactory.Name = "myFactory" objFactory.SetValue(

MFC控件大小随窗体大小而改变

  本文给大家分享的是使用VC++根据对话框大小调整控件大小的方法和示例代码,有需要的小伙伴可以参考下. 一.大小和位置都改变 1.首先为窗体类添加CRect m_rect,该成员变量用来记录窗体的当前大小. 2.在类向导里面(Ctrl+W),为窗体添加消息WM_SIZE的响应函数OnSize(); 注意if(nType==1) return;这一句必须添加,否则最小化恢复的时候会出错. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2

窗体及控件大小改变问题

问题描述 最近用c#做一个项目,先给客户第一版界面,客户在自己的电脑上打开后截图发邮件问我是什么玩意,我打开客户给的截图,图片错位,控件大小位置都变了,窗口大小也变了,自己很是郁闷,在自己的电脑上明明很好的,我以为是dock设置的问题,连夜修改,在自己和同事的电脑测试,显示正常,改变窗口大小也没问题,随便拖动,再次发给客户,客户再次截图发邮件叼我发的是什么垃圾,还是图片错位,控件错位,窗口大小变了.我更郁闷了,明明在我们这好好的,到客户那里就那样了,客户也不是诚心刁难啊,截图摆在那里的.几天后客