Android代码中如何获取控件宽高

PS2硬盘启动终极指南:从FMCB到OPL,告别光驱打造游戏博物馆 在计算机存储与数据读取领域,硬盘启动技术通过将操作系统或应用程序从本地硬盘直接加载,绕过了传统光驱等外部介质,实现了速度与可靠性的双重提升。其核心原理在于利用引导程序接管系统初始化流程,直接访问硬盘上的特定分区与文件镜像。这项技术的价值在于极大提升了数据读取效率、降低了物理介质损耗,并扩展了存储容量与管理的灵活性。在怀旧游戏硬件改造、嵌入式系统定制等场景中,硬盘启动技术被广泛应用,以实现老旧设备的功能焕新与性能优化。本文聚焦于索尼PS2游戏主机的硬盘启动方案,深入探讨了如何利用FMCB(Free MCBoo 阅读详情

源地址http://blog.youkuaiyun.com/nailsoul/article/details/25909313

总结

 

1. 界面的原点(0, 0)是除去status bar和title bar之后剩下的区域。如果使用了全屏,不显示状态栏,不显示标题栏这样的主题后,区域的原点位置会相应改变。

 

2. FrameLayout的widget中使用类似android:layout_marginLeft="65px"这样的属性,一定要加上android:layout_gravity,否则margin无效。还要注意FrameLayout的android:layout_width和android:layout_height对layout_gravity的影响。

 

3. 使用布局属性一定要分清谁是parent,parent用的是什么layout,layout_width和layout_height的值。

 

4. 不同的布局属性也可以实现相同的功能。例如layout_gravity="center"和android:layout_centerInParent ="true"。

 

5. Eclipse的Android开发工具插件ADT里面有一个所见即所得的开发UI的功能。利用Graphical Layout可以预览的效果。但是,有时会遇到以下问题:


测量控件尺寸(宽度、高度)是开发自定义控件的第一步,只有确定尺寸后才能开始画(利用canvas在画布上画,我们所使用的控件实际上都是这样画上去的)。当然,这个尺寸是需要根据控件的各个部分计算出来的,比如:padding、文字大小,间距等。


非容器控件的onMeasure

下面我们就来看看如何给非容器控件(即直接extends View)这只尺寸的:

1. @Override
2. protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
3. setMeasuredDimension(measureWidth(widthMeasureSpec), measureHeight(heightMeasureSpec));
4. }

通过重写onMeasure()方法来设置尺寸。这个方法实际是由容器控件(LinearLayout、RelativeLayout)来调用的,以便容器控件知道我需要分配给你多大空间或尺寸。

计算完尺寸后,最终调用setMeasuredDimension()来设置。比如,我要创建个 宽度是200px,高度是100px的控件,就可以setMeasuredDimension(200, 100)。

注意setMeasuredDimension()接收的值是px值,而不是dp值,所以我们不可能像上面那样将尺寸写固定的。如何做那:

参数 int widthMeasureSpec, int heightMeasureSpec 是指明控件可获得的空间以及关于这个空间描述的元数据,是与布局文件中Android:layout_width、android:layout_height相联系的。如何使用:

01.    /**
02. * 计算组件宽度
03. */
04. private int measureWidth(int widthMeasureSpec) {
05. int result;
06. int specMode = MeasureSpec.getMode(widthMeasureSpec);
07. int specSize = MeasureSpec.getSize(widthMeasureSpec);
08.  
09. if (specMode == MeasureSpec.EXACTLY) {//精确模式
10. result = specSize;
11. } else {
12. result = getDefaultWidth();//最大尺寸模式,getDefaultWidth方法需要我们根据控件实际需要自己实现
13. if (specMode == MeasureSpec.AT_MOST) {
14. result = Math.min(result, specSize);
15. }
16. }
17. return result;
18. }

调用MeasureSpec.getMode(measureSpec),可以获得设置尺寸的mode(模式)。

mode共有三种情况,取值分别为:

 MeasureSpec.UNSPECIFIED,MeasureSpec.EXACTLY,MeasureSpec.AT_MOST。


MeasureSpec.EXACTLY是精确尺寸,当我们将控件的layout_width或layout_height指定为具体数值时如andorid:layout_width="50dip",或者为FILL_PARENT是,都是控件大小已经确定的情况,都是精确尺寸。

MeasureSpec.AT_MOST是最大尺寸,当控件的layout_width或layout_height指定为WRAP_CONTENT时,控件大小一般随着控件的子空间或内容进行变化,此时控件尺寸只要不超过父控件允许的最大尺寸即可。因此,此时的mode是AT_MOST,size给出了父控件允许的最大尺寸。

MeasureSpec.UNSPECIFIED是未指定尺寸,这种情况不多,一般都是父控件是AdapterView,通过measure方法传入的模式。


measureWidth() 方法是个固定实现,几乎不用改, 唯一需要我们实现的就是getDefaultWidth()。即,当mode处于最大模式下,此时父容器会将他所能给你的或者说目前剩余的最大空间给你。你只能在这个空间内设定控件尺寸。一个简单的类似TextView的getDefaultWidth()的实现:

1. private void getDefaultWidth(){
2. int txtWidth = (int)this.paint.measureText(this.text);
3. return txtWidth + this.paddingLeft + this.paddingRight;
4. }


上面说了宽度的测量,高度同理:

01.    /**
02. * 计算组件高度
03. */
04. private int measureHeight(int measureSpec) {
05. int result;
06. int specMode = MeasureSpec.getMode(measureSpec);
07. int specSize = MeasureSpec.getSize(measureSpec);
08.  
09. if (specMode == MeasureSpec.EXACTLY) {
10. result = specSize;
11. } else {
12. result = getDefaultHeight();
13. if (specMode == MeasureSpec.AT_MOST) {
14. result = Math.min(result, specSize);
15. }
16. }
17. return result;
18. }

有了上面的实现,我们就可以在布局文件中使用控件时,通过android:layout_width、android:layout_height来自定义控件的宽度、高度。


容器控件的onMeasure


容器控件一般是继承ViewGroup,ViewGroup是个抽象类,本身没有实现onMeasure,但是他的子类都有各自的实现,通常他们都是通过measureChildWithMargins函数或者其他类似于measureChild的函数来遍历测量子View,被GONE的子View将不参与测量,当所有的子View都测量完毕后,才根据父View传递过来的模式和大小来最终决定自身的大小.

在测量子View时,会先获取子View的LayoutParams,从中取出宽高,如果是大于0,将会以精确的模式加上其值组合成MeasureSpec传递子View,如果是小于0,将会把自身的大小或者剩余的大小传递给子View,其模式判定在前面表中有对应关系.

ViewGroup一般都在测量完所有子View后才会调用setMeasuredDimension()设置自身大小。


在activity中可以调用View.getWidth、View.getHeight()、View.getMeasuredWidth()、View.getgetMeasuredHeight()来获得某个view的宽度或高度,但是在onCreate()、onStrart()、onResume()方法中会返回0,这是应为当前activity所代表的界面还没显示出来没有添加到WindowPhone的DecorView上或要获取的view没有被添加到DecorView上或者该View的visibility属性为gone 或者该view的width或height真的为0 所以只有上述条件都不成立时才能得到非0的width和height  

所以要想获取到的width和height为真实有效的 则有以下方法

1.在该View的事件回调里使用  这时候该view已经被显示即被添加到DecorView上 如点击事件  触摸事件  焦点事件等

 

[java]  view plain copy
  1. View view=findViewById(R.id.tv);  
  2.     view.setOnClickListener(new OnClickListener() {  
  3.           
  4.         @Override  
  5.         public void onClick(View v) {  
  6.             int width = v.getWidth();  
  7.         }  
  8.     });  

 

2.在activity被显示出来时即添加到了DecorView上时获取宽和高如onWindowFocusChanged() 回调方法

 

[java]  view plain copy
  1. @Override  
  2.   public void onWindowFocusChanged(boolean hasFocus) {  
  3.     View iv1 = findViewById(R.id.iv1);  
  4. View iv2=findViewById(R.id.iv2);  
  5. String msg1="iv1' width:"+iv1.getWidth()+" height:"+iv1.getHeight()+"  measuredWidth:"+iv1.getMeasuredWidth()+"measuredHeight:"+iv1.getMeasuredHeight();  
  6. String msg2="iv2' width:"+iv2.getWidth()+" height:"+iv2.getHeight()+"  measuredWidth:"+iv2.getMeasuredWidth()+"measuredHeight:"+iv2.getMeasuredHeight();  
  7. i("onWindowFocusChanged() "+msg1);  
  8. i("onWindowFocusChanged() "+msg2);  
  9.     super.onWindowFocusChanged(hasFocus);  
  10.   }  

 

3.或在onResume方法最后开线程300毫秒左右后获取宽和高  因为onResume执行完后300毫秒后 界面就显示出来了  

当然地2种和地3种方法要保证获取宽高的view是在setContentView时设进去的View或它的子View

 

[java]  view plain copy
  1. view.postDelayed(new Runnable() {  
  2.               
  3.             @Override  
  4.             public void run() {  
  5.                 View iv1 = findViewById(R.id.iv1);  
  6.                 View iv2=findViewById(R.id.iv2);  
  7.                 String msg1="iv1' width:"+iv1.getWidth()+" height:"+iv1.getHeight()+"  measuredWidth:"+iv1.getMeasuredWidth()+"measuredHeight:"+iv1.getMeasuredHeight();  
  8.                 String msg2="iv2' width:"+iv2.getWidth()+" height:"+iv2.getHeight()+"  measuredWidth:"+iv2.getMeasuredWidth()+"measuredHeight:"+iv2.getMeasuredHeight();  
  9.                 i("onWindowFocusChanged() "+msg1);  
  10.                 i("onWindowFocusChanged() "+msg2);  
  11.             }  
  12.         }, 300);  


 

4.在onCreate()或onResume()等方法中需要获取宽高时使用getViewTreeObserver().addOnGlobalLayoutListener()来添为view加回调在回调里获得宽度或者高度获取完后让view删除该回调

 

[java]  view plain copy
  1. view.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {  
  2.           
  3.         @Override  
  4.         public void onGlobalLayout() {  
  5.             view.postDelayed(new Runnable() {  
  6.                   
  7.                 @Override  
  8.                 public void run() {  
  9.                     View iv1 = findViewById(R.id.iv1);  
  10.                     View iv2=findViewById(R.id.iv2);  
  11.                     String msg1="iv1' width:"+iv1.getWidth()+" height:"+iv1.getHeight()+"  measuredWidth:"+iv1.getMeasuredWidth()+"measuredHeight:"+iv1.getMeasuredHeight();  
  12.                     String msg2="iv2' width:"+iv2.getWidth()+" height:"+iv2.getHeight()+"  measuredWidth:"+iv2.getMeasuredWidth()+"measuredHeight:"+iv2.getMeasuredHeight();  
  13.                     i("onWindowFocusChanged() "+msg1);  
  14.                     i("onWindowFocusChanged() "+msg2);  
  15.                 }  
  16.             }, 300);  
  17.         }  
  18.     }); 


在Android中,有时需要对控件进行测量,得到的控件宽度和高度可以用来做一些计算。在需要自适应屏幕的情况下,这种计算就显得特别重要。另一方便,由于需求的原因,希望一进入界面后,就能得到控件的宽度和高度。

可惜的是,根据我的验证,利用网上转载的那些方法在OnCreate函数中获取到的仍然是0(希望搞技术的能自己验证过再转载),例如Measure方法之后调用getMeasuredWidth的值还是0。

原因是因为当OnCreate函数发生时,只是提供了数据初始化的机会,此时还没有正式绘制图形。而绘制图形在OnDraw中进行,此时计算又显得太晚。容易想到的办法是:希望能在程序刚刚测量好某个指定控件后,拿到它的宽度和高度立刻进行计算或数据初始化。这就需要有一个方法来监听到这个事件的发生,幸好Android提供了这样的机制,利用View类中的getViewTreeObserver方法,可以获取到指定View的观察者,在绘制控件前的一刹那进行回调,这样速度上又不耽误,得到的数据由是准确的,但此方法在之后可能会被反复调用,因此需要加入限制,普通需求下,只计算一次就够了,代码如下(此代码在OnCreate回调函数中验证通过,实时上,因为它是监听器,所以发生事件时已经和OnCreate无关了):

layout = (MetroLayout)findViewById(R.id.layout);

ViewTreeObserver vto =layout.getViewTreeObserver();

vto.addOnPreDrawListener(newViewTreeObserver.OnPreDrawListener()

{

public boolean onPreDraw()

{

if (hasMeasured == false)

{

int height = metroLayout.getMeasuredHeight();

int width = metroLayout.getMeasuredWidth();

//获取到宽度和高度后,可用于计算

hasMeasured = true;

}

return true;

}

});

[AI] 企业内网部署大模型的三种常见方案:从“能用”到“好用”的技术选型指南 企业内网部署大模型的三种方案解析:本地模型安全但门槛高,平台方案(如Dify)最平衡推荐,混合架构适合进阶需求。关键路径是渐进式演进,从快速验证到平台化建设,核心在于流程优化而非单纯选模型。数据安全、成本可控和工程落地能力是决策重点。 阅读详情

相关推荐

ESP32接入扣子(Coze) API使用自定义智能体

本示例将使用ESP32开发板通过WiFi接入 **Coze API**,实现一个简单的聊天机器人功能。用户可以通过串口向机器人输入问题,ESP32将通过Coze API与智能体进行通信,并返回对应的回复。本文将详细介绍了如何通过HTTP请求和JSON解析来与API进行交互,并给出完整的代码示例。

宁子希的博客 1万+

android 获取一个view的高度,android-以编程方式获取布局的高度和宽度

android-以编程方式获取布局的高度和宽度我设计了一个布局,其中LinearLayout有2个孩子-2和-1,并且在每个孩子中我放置不同的视图。我只想测量-2的高度和宽度,以便可以实现自己的目的。在程序中我正在使用int height,width;FrameLayout fr=(FrameLayout)findviewbyid(R.id.fr);height=fr.getHeight();wi...

weixin_39795971的博客 563

PTA 学生信息的那些操作:添加记录(结构体)

这是河南工业大学自主命题的一道基础题,题目如下: 有一学生成绩表,包括学号、姓名、3门课程成绩。已知该成绩表按学号升序排序。请编程实现,添加一个新的学生信息,且使成绩表仍按学号有序;若待添加的学号与已有学号重复,则输出错误信息,拒绝添加。 输入格式: 首先输入一个整数n(1<=n<=100),表示学生人数; 然后输入n行,每行包含一个学生的信息:学号(12位)、姓名(不含空格且不超过20位),以及3个整数,表示3门课成绩,数据之间用空格隔开。 最后一行输入一个待添加的学生信息,包括学号

weixin_63617665的博客 3156

android 获取控件的高,android获取屏幕宽高与获取控件宽高 步骤总结

android获取屏幕宽高与获取控件宽高 方法总结获取屏幕 宽高 和 获取空间的宽高 在开发的时候经常用到,刚开始做开发的时候 总是 复制粘贴 不知道 所以然 ,今天 彻底的 总结一下 获取宽高的 用法先讲一下原理 在最后贴出代码之一直接使用。1. 获取屏幕的宽高。首先要只一个 函数就是WindowManager他的api是这样说的android.view接口 WindowManager所有...

weixin_42588672的博客 927

FreeModbus源码详解

本篇按照FreeModbus协议栈的工作流程,对源代码进行总结解析;FreeModbus协议栈作为从机,等待主机传送的数据,当从机接收到一帧完整的报文后,对报文进行解析,然后响应主机,发送报文给主机,实现主机和从机之间的通信; 1:demo.c中三个函数,完成协议栈的准备工作; eMBInit()函数:(mb.c) /*函数功能: *1:实现RTU模式和ASCALL模式的协议栈初始化; *2

2万+

python基础语法与数据结构

本文摘要: Python基础语法包含输入输出、函数、变量、数据类型及运算符等内容。输入函数input()获取键盘输入并以字符串存储,输出函数print()可格式化输出数据。函数通过def定义,可带参数和返回值,提高代码复用性。变量无需声明类型,可动态赋值。数据类型包括数字、字符串、布尔及复合类型,可通过type()查看。运算符包含算术、赋值等类型,其中复合赋值运算符如+=可简化运算。类型转换函数如int()、str()等可实现显式类型转换。这些基础语法构成Python编程的核心要素。

MM602388的博客 434

Android——View宽高的设置和多种获取宽高的方法、layout_grivaty与grivaty的区别

关于Layout_width/height引发的宽高思考 方式一: 结果不符合预期。 运行结果: 方式二: 结果符合预期。 如下图: Android控件宽高的规则:    Android下的控件默认没有宽高,是由父控件给其宽高的。           其中一般的view控件是由(ViewGroup控件:LinearLayout

wuseyukui的专栏 8362

Redmi K30 5G刷 LineageOS17.1

前言 买手机前就观望了Xdr论坛,看Redmi K30 5G有LineageOS17.1的Rom并且还挺热,应该还不错,就入手了。晚上就刷机了。买了小米就是为了折腾,为发烧而生。 在开始前还请先安装adb工具,因为我自己是做Android开发的,自带adb,不会安装的可以百度“Android安装adb工具”。还有下载刷机文件:百度云 密码:2a0f 刷机的系统是刚买来的低版本,没有升级过Rom,如果高版本慎刷。 还有这个Rom是5G版本的,4G版本的不要刷。 建议没有刷过机器的最好不要尝试,变砖后果自负。

u010436867的博客 1万+

Android 获取屏幕宽度和高度的几种方法

方法0 Display display = getWindowManager().getDefaultDisplay(); int width = display.getWidth(); int height = display.getHeight(); Log.d(TAG, "width = " + width + ",height = " + height)...

rainbow的博客 3040

手把手教你学Simulink--基于飞轮储能系统的场景实例:飞轮储能与锂电池混合储能系统的协同控制

本文详细介绍了基于Simulink的飞轮储能与锂电池混合储能系统协同控制建模方法。通过高通/低通滤波器实现功率分配,使飞轮处理高频波动(±100kW),锂电池承担削峰填谷(50kW)。仿真结果表明,该系统效率达88%,锂电池循环次数减少90%,投资成本比纯电池方案节省200万美元。文章包含完整的建模步骤、控制策略设计和多场景仿真分析,为构建高效、长寿、经济的智能储能系统提供了实用解决方案。

MHD0815的博客 342

第3讲:单端传输线的时域TDR仿真(基于实战的第一次仿真视角切换)

本文为CST仿真系列教程的第3讲,主要介绍传输线阻抗(TDR)的两种仿真方法:基于S参数的频域计算和基于高斯脉冲的时域计算。文章详细演示了在CST PCB Studio中修改电容参数、设置TDR仿真参数(包括截止时间和采样点数)的操作步骤,并通过对比实验展示TVS寄生电容对阻抗曲线的影响。最后将两种TDR方法的结果进行对比,验证了两种方法的一致性。本教程适合硬件工程师通过时域波形直观分析传输线阻抗特性,是信号完整性分析的重要技能。

一只豌豆象的博客 228

Android中动态调整ImageView的宽高比

1.原理 我在实践中,是调整一个ListView中的Item里的ImageView元素的宽高比,类似微信公众号的消息内容,item有固定padding,然后ImageView宽度撑满屏幕,高度由一定比例决定。 在写好布局文件后,首先拿到整个屏幕的宽度,然后减去左右两侧的padding所占的宽度,得到的结果就是ImageView应该设置的宽度,再由一定比例计算出高度,最后以ImageView.s...

0729Liang 6105

YOLOv11涨点改进 | 全网独家下采样改进、细节涨点篇 | TGRS 2025 | 引入PWD参数化小波下采样模块,减少下采样过程中小目标的关键细节丢失,即插即用,助力高效涨点发论文

本文提出了一种改进YOLOv11小目标检测性能的参数化小波下采样(PWD)模块。PWD通过小波变换保留目标细节信息,增强频率域特征表达,有效解决了传统下采样导致的小目标信息丢失问题。该模块采用双分支设计,结合自适应频率选择和空间补偿机制,在红外图像和低光场景中表现出更强的抗干扰能力。实验表明,PWD能显著提升YOLOv11对弱纹理和低对比度目标的检测精度,同时保持计算效率。文章详细介绍了PWD的结构原理、实现代码及在YOLOv11中的集成方法,为小目标检测提供了有效的改进方案。

Ai缝合怪、助力小伙伴高效发论文 234

安卓代码中获取dp值为控件设置宽高,获取dimen值

引言: 今天遇到一个问题,在自定义控件的时候,要求在代码中设置控件的宽高。本来自以为:对嘛,很简单,就是直接设置params //这样直接初始化的时候设置 LayoutParams iconparams=new LayoutParams(size,size); //又或者这样 iconparams.height=size; 然后问题就来了,比如...

tran_sient的博客 3243

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Android 获取控件的真实宽高,并且在代码中赋值

view一个控件,因为我是linearlayout权重水平分布的,想成为一个正方形,而且他的宽度是根据手机分辨率来的,不清楚要给高多少才算是合适,而且直接用LayoutParms获取不到真实的宽度,所以我在等他绘制完成之后获取他的宽度,然后把高度设置为一样的,下面就贴出代码 //注册一个观察者来监听视图树

java后台, 安卓App, 微信小程序都会, 有需要的可以联系! 1762

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Android使用绝对布局AbsoluteLayout动态添加控件

layout.xml <AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/absolute_lay

柳鲲鹏 1075

【Android】获取控件的宽高和位置

获取控件的绝对位置(包括状态栏)可以用这种方法,调用方法后,location[0]和location[1]就分别被赋值了。 int[] location = new int[2]; view.getLocationOnScreen(location); 获取控件的相对与当前窗口的位置可以用getLocationInWindow,如果控件在dialog中,则当前...

乔培宸的博客 767

如何实现Android 获取控件实际宽高的具体操作步骤

Android 实现获取控件实际宽高的具体操作步骤

weixin_42602900的博客 1258

获取屏幕高宽,在代码中设置控件大小的方法

获取屏幕的宽高 WindowManager windowManager = getWindowManager();        Display display = windowManager.getDefaultDisplay();   display.getWidth() display.getHeight()= 在View中同样可以获得屏幕的

li15225271052的博客 650

android获取屏幕宽高

获取屏幕宽高 [java] view plaincopy // 获取屏幕宽高(方法1)   int screenWidth = getWindowManager().getDefaultDisplay().getWidth(); // 屏幕宽(像素,如:480px)   int screenHeight = getWindowManager().getDefau

苦涩 559

Android获取控件宽高的几种方式

最后这里放上我这段时间复习的资料,这个资料也是偶然一位朋友分享给我的,里面包含了腾讯、字节跳动、阿里、百度2020-2021面试真题解析,并且把每个技术点整理成了视频和PDF(知识脉络 + 诸多细节)。还有高级架构技术进阶脑图、高级进阶架构资料帮助大家学习提升进阶,这里我也免费分享给大家也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。一起互勉~《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!多细节)。还有。

2401_84009065的博客 432

Android学习笔记之屏幕宽高、状态栏宽高、标题宽高以及left()、top()、right()、bottom()

Android学习笔记之屏幕宽高、状态栏宽高、标题宽高以及left()、top()、right()、bottom()前言:  想学号安卓,这几个方法及属性你不得不学会怎么获取,当你学会了如何获取屏幕宽高、状态栏宽高、标题栏宽高以及子控件与父控件的left()、top()、right()、bottom()等,这会对你学习自定义控件会有很大的帮助,我之前做自定义的时候有时候也很难弄清他们之间的区别,今天

GodV的博客 4112

Android inflate方法宽高处理

Android inflate方法宽高处理

zhengbin_mei的专栏 4207

android设置控件xy坐标系,Android动态设置控件坐标

代码:import android.view.View;import android.view.ViewGroup.MarginLayoutParams;import android.widget.RelativeLayout;/** 获取、设置控件信息*/public class WidgetController {/** 获取控件宽*/public static int getWidth(Vi...

weixin_29447549的博客 2014

handler回调主线程_巧用Handler获取View控件信息

众所周知,在Android实际开发中,对于某些复杂多变的情况,控件的位置摆放、大小控制并非是xml类型的layout文件完全可以搞定的。此时,我们通常会使用Java代码来通过动态计算,将指定的控件摆放在相应的位置,并限定其大小。同样地,也需要获取某个控件的大小。 对于获取控件宽、高的方法,大家可以自行谷歌或者百度,大抵无非一下三种方法:给相应的View控件添加ViewTreeObserver回调;...

weixin_32068473的博客 192

android 获取xml控件的高度,Android获取自定义控件位置坐标 屏幕尺寸 标题栏 状态栏高度...

android获取自定义控件位置坐标,屏幕尺寸,标题栏,状态栏高度1.获取自定义控件height在本Activity中获取当前Activity中控件的height:Button button = (Button)findViewById(R.id.button);int buttonHeight = button.getHeight();在Activity中获取其他xml文件中控件的height:...

weixin_29303701的博客 942

android布局位置xy,Android_获取控件大小和设置调整控件的位置XY示例,网上很多人对设置控件的位置 - phpStudy...

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

weixin_31527905的博客 360
上一篇: Android MarginLeft与MarginStart的区别
下一篇: 一个类搞定Android适配!!
Manaasdfasdf
博客等级 码龄11年 131粉丝 151原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值