Android基础之获取LinearLayout的宽高

Android整理笔记—— 1.3动态创建并显示视图  LayoutParams的运用 1.3动态创建并显示视图 LayoutParams的运用 1、对于一个没有被载入或者想要动态载入的界面,都需要使用LayoutInflater.inflate()来载入; 2、对于一个已经载入的界面,就可以使用Activiyt.findViewById()方法来获得其中的界面元素。 主要用到的方法: LayoutParams(宽,高):    LayoutParams 是ViewGro... 阅读详情


LinearLayout是线性布局控件,它包含的子控件将以横向或竖向的方式排列,按照相对位置来排列所有的widgets或者其他的containers,超过边界时,某些控件将缺失或消失。有的时候,我们需要想获取LinearLayout宽高,下面通过这篇文章来跟着小编一起学习学习吧。

前言

看到题目获取LinearLayout宽高,或许大家想到的解决方法如下:

?
1
2
3
4
5
public void onCreate(Bundle savedInstanceState) {
   super .onCreate(savedInstanceState);
   LinearLayout ll = (LinearLayout) findViewById(R.id.layInfo);
  Log.i( "w" , ll.getWidth()+ "L" +ll.getHeight());
}

你会发现打印出来是0

那是因为在onCreate方法的时候LinearLayout还并没有绘制完成,所以获取的高度均为0,

或者试着把这段代码放到onResume()方法中去,依然是0。

实现方法

如果我们用获取LinearLayout的宽高

可以通过定时器不断的监听LinearLayout的宽高,等绘制完成后,关闭定时器即可。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
final Handler handler= new Handler(){
    @Override
    public void handleMessage(Message msg) {
    if (msg.what == 1 ) {
     if (ll.getWidth()!= 0 ) {
     Log.i( "w" , ll.getWidth()+ "L" +ll.getHeight());
       timer.cancel();
 
     }
    }
    }
   };
   timer = new Timer();
   TimerTask task = new TimerTask(){
    public void run() {
     Message message = new Message();
     message.what = 1 ;
     myHandler.sendMessage(message);
     }
    };
   timer.schedule(task, 10 , 1000 );
  }

类似,如果想在Activity启动后立即弹出PopupWindow,我们知道在Activity的onCreate()方法中直接写弹出PopupWindow方法会报错,因为activity没有完全启动是不能弹出PopupWindow。

我们可以尝试用两种方法实现:

1、用onWindowFocusChanged方法

?
1
2
3
4
5
@Override
public void onWindowFocusChanged( boolean hasFocus) {
  super .onWindowFocusChanged(hasFocus);
  showPopupWindow();
}

2、用Handler和Runnable,延时

?
1
2
3
4
5
6
7
8
9
10
11
@Override
protected void onCreate(Bundle savedInstanceState) {
  super .onCreate(savedInstanceState);
  setContentView(R.layout.main);
  mHandler.postDelayed(mRunnable, 1000 );
}
private Runnable mRunnable = new Runnable() {
  public void run() {
  showPopupWindow();
  }
};

这样获取LinearLayout宽高问题就解决了。

总结

以上就是这篇文章的全部内容了,希望本文的内容对各位Android开发者们能有所帮助,如果有疑问大家可以留言交流。

告别仿真失败!用Sigrity 2022 SystemSI搞定DDR4信号质量仿真的保姆级流程 本文详细介绍了如何使用Sigrity 2022 SystemSI工具进行DDR4信号完整性仿真,提供了一套避免仿真失败、提高仿真精度和加速仿真流程的保姆级方法。从模型验证、设计数据预处理到拓扑构建和参数提取,再到高级调试技巧和仿真加速方案,帮助硬件工程师系统性地解决DDR4信号质量仿真中的常见问题。 阅读详情

相关推荐

保姆级教程:用Fiddler+夜神模拟器搞定抖音App抓包(附SSL Pinning绕过实战)

本文提供了一套完整的移动端抓包解决方案,详细介绍了如何使用Fiddler和夜神模拟器进行抖音App抓包,并重点讲解了SSL Pinning绕过技术。通过Xposed框架和JustTrustMe模块的组合,实现高效抓包,适用于产品分析、竞品研究和安全测试等场景。

weixin_30855099的博客 424

如何获取LinearLayout的宽度和高度?

由于Android程序的运行机制决定了无法再组件类外部使用getWidth和getHeight方法获得高度和宽度(在自定义组件类中可以实现),必须使用View.getMeasuredWidth和View.getMeasureHeight方法获得当前组件的宽度和高度,在调用这两个方法之前,必须调用View.measure方法先测量组件宽度和高度。 如果想直接获取在布局文件中定义的组件的宽度和高度,

cjllife的专栏 1万+

Sonatype nexus3 数据迁移及升级3.71+(迁移到H2数据库)

nexus3旧版本OrientDB升级H2,及整体迁移nexus3数据到其它服务器。

葫芦娃 5557

【Android】获取TextView宽度或高度

【android】实时获取TextView的高度或者宽度

weixin_44500303的博客 4625

从光耦隔离到稳定驱动:信捷伺服与STM32的硬件设计陷阱与救赎

本文深入探讨了信捷伺服驱动器与STM32微控制器配合时的硬件设计关键问题,包括光耦隔离电路选型、电源电压选择、拨码开关设置等核心环节。针对伺服驱动器的稳定驱动需求,提供了从电路设计到抗干扰策略的完整解决方案,帮助工程师规避常见陷阱,提升工业控制系统的可靠性。

gold8的专栏 312

西门子S7-1200 PLC控制步进电机实战:从I/O分配到梯形图,手把手教你实现正反转与调速

本文详细介绍了如何使用西门子S7-1200 PLC控制步进电机,从硬件接线到梯形图编程,实现正反转与三档调速功能。通过I/O分配、脉冲生成逻辑和方向控制等核心步骤,帮助工程师快速掌握PLC控制步进电机的关键技术,提升工业自动化项目的实施效率。

weixin_28733777的博客 535

Android Textview 高度问题

左右两个TableLayout ,添加多行多列的Textview,textview限制了高度

luohaowang320的专栏 1474

从零到一:基于STM8的125KHz RFID读卡器实现与曼彻斯特码解析实战

本文详细介绍了基于STM8单片机的125KHz RFID读卡器实现过程,重点解析了曼彻斯特码的编码原理与解码算法。通过硬件电路设计、软件实现及性能优化,帮助开发者低成本构建稳定读取EM4100卡片的系统,适用于门禁、考勤等应用场景。

weixin_42525211的博客 236

LinearLayout获取动态的高度+ 面试题讲解(图文并茂)

一、在java中动态设置高度 // 通过LayoutParams、setLayoutParams设置linearlayout高度为“800”。 lnout=(LinearLayout) findViewById(R.id.lnout); LayoutParams para; para = lnout.getLayoutParams(); para.height=800; lnout.setLayoutParams(

Jason_996的博客 1389

司法AI系统的架构设计:法律知识图谱如何辅助智能庭审?架构师亲测

简单来说,法律知识图谱是一种采用图数据结构(节点Node + 边Edge/关系Relation)来组织和表达法律领域知识的语义网络。它以。

AI 算法实战派 1089

射频仿真软件:ADS (Advanced Design System)_(29).ADS脚本编程与自动化

ADS脚本编程为射频设计提供了强大的自动化工具,可以帮助用户实现设计流程的优化、参数扫描和优化、结果分析和报告生成等任务。选择合适的脚本语言(Python、Tcl、AEL)并合理设置ADS环境,可以显著提高设计效率和准确性。通过实际项目中的应用案例,我们可以更好地理解如何利用脚本编程解决复杂的射频设计问题。希望本文对您的ADS脚本编程学习有所帮助。

kkchenjj的博客 2472

Android获取LinearLayout的宽高

看到题目获取LinearLayout宽高,或许大家想到的解决方法如下: public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LinearLayout ll = (LinearLayout) findViewById(R.id.layInfo); Log.i("w"

yyxhzdm的博客 1745

相位编码脉冲压缩信号的理论研究与 Matlab 实现

通过实际的代码示例,我们展示了如何生成信号、进行相位编码、传输信号、相位解码和脉冲压缩的步骤。相位编码脉冲压缩信号是通过在发射端对信号进行相位编码,并在接收端对信号进行相位解码来实现的。其主要原理是在发射端将信号的频率进行调制,使得信号具有宽带特性,然后在接收端通过匹配滤波器对信号进行解调和压缩,从而提高信号的分辨率和抗干扰能力。相位编码脉冲压缩信号是一种在信号处理中常用的技术,用于提高信号的分辨率和抗干扰能力。可以使用 Matlab 中的信号生成函数生成一个宽带脉冲信号,例如矩形脉冲信号或高斯脉冲信号。

CyberWizarDD的博客 906

android linearlayout 方法,Android基础之获取LinearLayout的宽高

前言看到题目获取LinearLayout宽高,或许大家想到的解决方法如下:public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);LinearLayout ll = (LinearLayout) findViewById(R.id.layInfo);Log.i("w", ll.getWi...

weixin_30869777的博客 770

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

android 代码获取布局和组件的宽高

获取布局的宽高不能直接用getWidth()或者getHeight直接获取,例如: public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LinearLayout ll_viewArea = (LinearLayout) findViewById(

heng615975867的专栏 9774

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Android inflate方法宽高处理

Android inflate方法宽高处理

zhengbin_mei的专栏 4207

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

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

动态设置view或布局的宽高

代码中动态设置view或布局的宽高 原创 2015年11月26日 15:41:14 标签:图片 /动态改变 /宽高 有时我们需要在应用中动态改变图片或某一块布局的大小。这就不能用XML文件写成固定值,而需要在java代码中动态设置。效果如下:       网上有一些教程使用relativeView.setLayoutParams(new Rel

qingxuan521721的博客 1万+

设置组件的长和宽 LayoutParams以及获得屏幕的宽和高

首先注意 我们在java代码中实现设置组件的大小的时候 在设置组建的位置的时候  比较麻烦  我们可以先将组件显示在布局文件里面  随后 在java代码中设置他的相关参数 这个时候  我们的组件显示的时候  就是按我们的java代码设置的相关参数显示的。 举例如下  我们需要根据屏幕的高度是指组件的高度 这个时候  我们就可以按照上面的思路进行。 Display mDisp

qqmuhua123的专栏 609

读书笔记——《Android 开发艺术探索》View的工作原理阅读笔记

View的工作原理阅读笔记初识ViewRoot和DecorViewDecorView的结构 初识ViewRoot和DecorView ViewRoot: 联系windowManager和Decorview的纽带,View的三大流程均通过ViewRoot完成 DecorView: 是Activity的顶级view。内部通常包含一个LinearLayout. 在ActivityThread的Appli...

蓝冷然的博客 374

android各种控件截图并返回Bitmap

开发过程中 偶尔有截图分享的需求 而对于布局的不同截图方式也不同 。功能虽小 然难免卡住 所以为了以后的开发快捷 故记录: 一、对于activity的截图 public static Bitmap shotScreen(Activity ctx) { View view = ctx.getWindow().getDecorView(); view.setDrawingCache...

qq_37731158的博客 713

安卓入门四十九 View布局过程

如:底部导航条中的条目,一般都是上图标(ImageView)、下文字(TextView),那么这两个就可以用自定义ViewGroup组合成为一个Veiw,提供两个属性分别用来设置文字和图片,使用起来会更加方便。此处需复写ViewGroup的onLayout(),其具体实现逻辑是指:计算子View的位置,即计算四顶点位置 = 计算Left、Top、Right和Bottom。在非人为设置的情况下,View的最终宽/高(getWidth() / getHeight())那么,“非一般”情况是什么?

weixin_52735932的博客 1414

android垂直排列元素_AndroidUI设计之布局-详细解析布局实现

写完博客的总结 : 以前没有弄清楚的概念清晰化父容器与本容器属性: android_layout...属性是本容器的属性, 定义在这个布局管理器的LayoutParams内部类中, 每个布局管理器都有一个LayoutParams内部类, android:... 是父容器用来控制子组件的属性. 如android:layout_gravity 是控制组件本身的对齐方式, android:gravit...

weixin_34539644的博客 742

计算html的高度,html计算各对象的宽高

Window对象属性ScreenLeft/ScreenTop/ScreenX/ScreenY只读整数,声明了窗口的左上角在屏幕上的 x 坐标 和 y 坐标。/*** 获取屏幕的宽度* @param context* @return*///方法一一.window相关网页正文部分上:window.screenTop网页正文部分左:window.screenLeft屏幕分辨率的高:window.scre...

weixin_36326528的博客 1019

android布局优化技巧,Android布局优化

8种机械键盘轴体对比本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?收集一些布局优化技巧,持续更新……include标签可以复用布局,统一修改管理,典型的比如标题栏,也可以在标签中重新设置layout属性merge标签用来去除不必要的视图层级如果仅仅是添加子视图到父视图进行显示,而不指定任何针对父视图的布局属性,可以使用另外,假如需要在LinearLayout里面嵌入一个布局,而恰恰这个...

weixin_29157361的博客 305

Android 布局之Button初步接触

1,在Activity活动对应的布局文件(layout.xml)中的LinearLayout标签下写如下代码(引用代码时请将注释去掉) <Button android:id="@+id/button_1"//"+"代表添加一个id。其他部分是引用一个ID名为button_1。 <!--设置宽高--> android:layout_width="match...

weixin_30782293的博客 230
上一篇: 分享几个Android开发有用的程序代码
下一篇: android中的键值对
It_BeeCoder
博客等级 码龄10年 967粉丝 238原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值