Android基础之获取LinearLayout的宽高

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

前言

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

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的宽高,等绘制完成后,关闭定时器即可。

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方法

@Override
public void onWindowFocusChanged(boolean hasFocus) {
 super.onWindowFocusChanged(hasFocus);
 showPopupWindow();
}

2、用HandlerRunnable,延时

@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开发者们能有所帮助,如果有疑问大家可以留言交流。

相关文章

  • android仿微信支付宝的支付密码输入框示例

    android仿微信支付宝的支付密码输入框示例

    本篇文章主要介绍了android仿微信支付宝的支付密码输入框示例,具有一定的参考价值,有兴趣的可以了解一下。
    2017-02-02
  • 简单实现android轮播图

    简单实现android轮播图

    这篇文章主要为大家详细介绍了android轮播图的相关资料,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • Android时光轴实现淘宝物流信息浏览效果

    Android时光轴实现淘宝物流信息浏览效果

    这篇文章主要为大家详细介绍了Android时光轴实现淘宝物流信息浏览效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • Android Handler leak分析及解决办法详解

    Android Handler leak分析及解决办法详解

    这篇文章主要介绍了Android Handler leak分析及解决办法详解的相关资料,需要的朋友可以参考下
    2017-03-03
  • Android如何自定义按钮效果

    Android如何自定义按钮效果

    这篇文章主要为大家详细介绍了Android如何自定义按钮效果的方法,帮助大家设计简洁大方的按钮,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • Android 点击生成二维码功能实现代码

    Android 点击生成二维码功能实现代码

    二维码,我们也称作QRCode,QR表示quick response即快速响应,在很多App中我们都能见到二维码的身影,最常见的莫过于微信了。接下来给大家介绍android 点击生成二维码功能实现代码,需要的朋友参考下吧
    2017-11-11
  • Android开发基础简化Toast调用方法详解

    Android开发基础简化Toast调用方法详解

    这篇文章主要为大家介绍了Android开发基础简化Toast调用方法的相关资料,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • Kotlin协程基础元素梳理分析

    Kotlin协程基础元素梳理分析

    这篇文章我们来讲协程的基础元素,毕竟协程是一个很强大的设计模式,深入了解需要花很多的时间,我们先从简单开始,其实学会了简单的使用,基本已经可以满足我们平时的开发需要了,话不多说,开始
    2022-11-11
  • Android Studio 升级到3.0后输入法中文状态下无法选词的终极解决方案

    Android Studio 升级到3.0后输入法中文状态下无法选词的终极解决方案

    这篇文章主要介绍了 AndroidStudio 升级到3.0后输入法中文状态下无法选词的解决方案,需要的朋友可以参考下
    2017-11-11
  • Android ImageLoader第三方框架解析

    Android ImageLoader第三方框架解析

    这篇文章主要为大家详细解析了Android ImageLoader第三方框架,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11

最新评论