Android获取LinearLayout宽高

企业动态
有的时候,我们需要想获取LinearLayout宽高,怎么办?本文告诉大家,一起学习一下吧!

[[189862]]

有的时候,我们需要想获取LinearLayout宽高

1.获取LinearLayout宽高

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

你会发现打印出来是0

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

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

如果我们用获取LinearLayout的宽高

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

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

类似,如果想在Activity启动后立即弹出PopupWindow,我们知道,

在Activity的onCreate()方法中直接写弹出PopupWindow方法会报错,因为activity没有完全启动是不能弹出PopupWindow。

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

2.用onWindowFocusChanged方法

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

3.用Handler和Runnable,延时

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

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

【本文为51CTO专栏作者“洪生鹏”的原创稿件,转载请联系原作者】

戳这里,看该作者更多好文

责任编辑:武晓燕 来源: 51CTO专栏
相关推荐

2021-09-26 08:35:17

Android控件宽高

2011-12-27 10:18:31

Web

2016-12-07 10:32:14

移动应用开发底部导航android

2012-11-07 13:53:07

电源高功率低密度

2013-03-28 13:27:14

Android获取屏幕

2014-04-08 16:02:28

宽字节注入数据安全MYSQL

2011-06-02 09:51:05

Android 手机

2011-05-07 11:03:01

轻博客宽岛

2014-08-21 10:39:54

Android开源库获取途径

2022-06-22 09:06:54

CSS垂直居中代码

2015-02-06 18:29:09

仿滴滴打车android

2016-06-06 00:51:55

北京移动宽带中国锐捷

2021-12-02 08:41:30

数仓建模设计

2015-10-12 11:19:35

墨迹天气引导界面android

2011-09-01 10:27:26

Android图片本地缓存Android远程图片

2011-04-21 15:38:05

Dalvik高斯林Android

2022-06-15 16:11:45

网络

2010-03-02 10:36:05

Android窗体

2012-12-28 14:28:26

Android开发

2012-05-07 13:41:18

JavaScript
点赞
收藏

51CTO技术栈公众号