`
HU555U
  • 浏览: 30526 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Android获取控件的大小

阅读更多
有时候我们需要获得控件的大小,但是在Activity的onCreate()生命周期方法中调用getWidth()和getHeight()方法并不能获得控件的宽和高,因为此时我们的界面并未被绘制完成。不过我们却可以在onWindowFocusChanged(boolean hasFocus)这个方法中获得控件的大小。
@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    int height = titleLeftBtn.getHeight();
    int width = titleLeftBtn.getWidth();
}

当前窗口的Activity在获得或者失去焦点的时候就会调用这个方法,它是这个Activity是否对用户可见的最好标志。
那么对于Fragment又该怎么办呢?Fragment并未提供类似onWindowFocusChanged的方法。这时我们就需要用到ViewTreeObserver了。
ViewTreeObserver observer = layoutIndex.getViewTreeObserver();
observer.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
    public boolean onPreDraw() {
        if (!isMeasured) {
	        int layoutHeight = layoutIndex.getMeasuredHeight();
	        isMeasured = true;
        }
        return true;
    }
});

顾名思义,这是个对视图变化进行监听的观察者。提供了以下接口,大家可以自己试着测试一下。
interface ViewTreeObserver.OnPreDrawListener
interface ViewTreeObserver.OnGlobalFocusChangeListener
interface ViewTreeObserver.OnGlobalLayoutListener
interface ViewTreeObserver.OnScrollChangedListener
interface ViewTreeObserver.OnTouchModeChangeListener

0
0
分享到:
评论
2 楼 zyj945 2015-10-19  
layoutIndex 这是干嘛的
1 楼 tcxdawn 2015-04-23  
isMeasured 是个boolean??哪里初始化的。。。干嘛用的

相关推荐

    android代码中获取控件高,宽度并修改

    1、在代码中获取控件的高度,宽度 2、修改控件的高度,宽度,调整显示效果

    android Activity里获取控件的宽高

    在Activity里获取控件的宽高,大家可以去试试~~

    Android实用控件自定义逼真相机光圈View

    Android实用控件自定义逼真相机光圈View 作者:佚名 来源:吾爱源码 2016-08-12 14:46:40 0 最近手机界开始流行双摄像头,大光圈功能也应用而生。所谓大光圈功能就是能够对照片进行后期重新对焦,其实现的原理...

    Android中oncreate中获得控件高度或宽度的实现方法

    如果需要自适应屏幕,需要一进入界面就得到父控件大小,然后需要在onCreate中动态设置子控件大小。  方法1: 利用ViewTreeObserver类的addOnPreDrawListener接口。 ViewTreeObserver vto = hscrollview....

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

    网上很多人对设置控件的位置都使用view.setPadding(left, top, right, bottom) ,其实这玩意很差劲,它是设置自己本身位置的偏移,我们很少需要这种效果,我需要... /* * 获取、设置控件信息 */ public class WidgetCo

    Android视图控件架构分析之View、ViewGroup

    在Android中,视图控件大致被分为两类,即ViewGroup和View,ViewGroup控件作为父控件,包含并管理着子View,通过...1.MeasureSpec包含了测量的模式和测量的大小,通过MeasureSpec.getMode()获取测量模式,通过MeasureSp

    Android中获得手机屏幕大小实现代码

    Android在自定义控件时,经常需要获得屏幕的宽高,每次都要写,不妨直接把他封装成工具类,直接拿来用,废话不说,直接... * 获取手机屏幕大小 * @author * */ public class MeasureUtil { /** * 宽 * @return */ pub

    Android自定义控件ViewGroup实现标签云

    本文实例为大家分享了Android自定义控件ViewGroup实现标签云的具体代码,供大家参考,具体内容如下 实现的功能: 基本绘制流程: 构造函数获取自定义属性 onMeasure()方法,测量子控件的大小 onLayout()方法,...

    集成目前Android主流优秀第三方组件

    这是一个集成目前Android主流优秀第三方组件、优秀好用的自定义控件、实用工具类封装、以及一些APP共通模块(比如:版本更新、意见反馈、引导界面等等)的开发包,帮助程序员快速开发自己的APP 已集成第三方开源...

    android计算器程序代码

    1、 选定Android模拟器屏幕大小,或者真机调试的屏幕大小;作为布局Layout的屏幕大小。 2、 基于线性布局,灵活运用布局嵌套,属性等实现主界面布局。 3、 基于drawable—selecter资源实现button控件的默认效果,...

    Android Studio 中获取屏幕宽度实例

    补充知识:Android屏幕适配之动态设置单个控件的宽高比例 前言:这个问题出现在我做平板项目的时候,需要横排显示一张图片以及其他控件,如下图: 要求图、文各占一半大小,图片的宽高比例目测是1:2。这种情况不适

    Android开发EditText属性.txt

    android:layout_weight="1"//权重,控制控件之间的地位,在控制控件显示的大小时蛮有用的。 android:textAppearance="?android:attr/textAppearanceLargeInverse"//文字外观 android:layout_gravity="center_vertical...

    Android AlertDialog、ActionSheetDialog模仿IOS7风格对话框.rar

    AlertDialog的方法和android中自带的用法相似,ActionSheetDialo的用法和AlertDialog差不多,基本的使用思路是:获取Dialog布局、获取自定义Dialog布局中的控件、定义Dialog布局和参数、调整dialog背景大小等。

    android实现图片验证码方法解析(自绘控件)

    重写onMeasure 测量控件大小  3.重写onDraw 绘制控件 2.根据需求在attrs文件中自定义属性 declare-styleable 声明自定义属性可以自定义一个新属性也可以引用已经存在的属性两者的区别就是新属性需要添加format进行...

    Android UI组件实例集合

    是 Android 上的一个异步从网络上获取图片并进行浏览的开源组件,可自动在本地进行缓存。该项目是 GreenDroid 的一部分。 13、仿Path按钮动画效果 PathButton 仿照Path应用首页左下角的Button动画效果写了个简单的...

    javacript获取当前屏幕大小

    本文主要介绍使用javacript获取当前屏幕大小的方法,需要的朋友可以参考下。

    android指定(上或者下)方向的新闻显示控件

    这是我自己写的一个控件,...用法:需要在xml布局文件中指定一个LinearLayout或者与之同级的布局,在代码中获取到他,然后在代码中通过addView(自定义控件view)这样加入我的这个自定义控件,可以指定字体颜色,字体大小

    SwissArmyKnife-android免root兼容所有版本ui调试工具.zip

    可以直接在android手机屏幕上显示当前Activity中所有控件(不管是否隐藏)的边界,内外边距大小,每一个控件大小,图片大小,字体颜色,大小,以及自定义信息。同时可以直接在屏幕上取色,另外还提供了直尺(单位为...

    Android自定义View实现可拖拽缩放的矩形框

    本文实例为大家分享了Android自定义View拖拽缩放矩形框的具体代码,供大家参考,具体内容如下 在开发项目中,需要一个矩形框来实现截屏功能,并且还需要可以任意拖拽和缩放,这就需要自定义View来实现了,具体功能...

Global site tag (gtag.js) - Google Analytics