有时候我们需要获得控件的大小,但是在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
分享到:
相关推荐
1、在代码中获取控件的高度,宽度 2、修改控件的高度,宽度,调整显示效果
在Activity里获取控件的宽高,大家可以去试试~~
Android实用控件自定义逼真相机光圈View 作者:佚名 来源:吾爱源码 2016-08-12 14:46:40 0 最近手机界开始流行双摄像头,大光圈功能也应用而生。所谓大光圈功能就是能够对照片进行后期重新对焦,其实现的原理...
如果需要自适应屏幕,需要一进入界面就得到父控件大小,然后需要在onCreate中动态设置子控件大小。 方法1: 利用ViewTreeObserver类的addOnPreDrawListener接口。 ViewTreeObserver vto = hscrollview....
网上很多人对设置控件的位置都使用view.setPadding(left, top, right, bottom) ,其实这玩意很差劲,它是设置自己本身位置的偏移,我们很少需要这种效果,我需要... /* * 获取、设置控件信息 */ public class WidgetCo
在Android中,视图控件大致被分为两类,即ViewGroup和View,ViewGroup控件作为父控件,包含并管理着子View,通过...1.MeasureSpec包含了测量的模式和测量的大小,通过MeasureSpec.getMode()获取测量模式,通过MeasureSp
Android在自定义控件时,经常需要获得屏幕的宽高,每次都要写,不妨直接把他封装成工具类,直接拿来用,废话不说,直接... * 获取手机屏幕大小 * @author * */ public class MeasureUtil { /** * 宽 * @return */ pub
本文实例为大家分享了Android自定义控件ViewGroup实现标签云的具体代码,供大家参考,具体内容如下 实现的功能: 基本绘制流程: 构造函数获取自定义属性 onMeasure()方法,测量子控件的大小 onLayout()方法,...
这是一个集成目前Android主流优秀第三方组件、优秀好用的自定义控件、实用工具类封装、以及一些APP共通模块(比如:版本更新、意见反馈、引导界面等等)的开发包,帮助程序员快速开发自己的APP 已集成第三方开源...
1、 选定Android模拟器屏幕大小,或者真机调试的屏幕大小;作为布局Layout的屏幕大小。 2、 基于线性布局,灵活运用布局嵌套,属性等实现主界面布局。 3、 基于drawable—selecter资源实现button控件的默认效果,...
补充知识:Android屏幕适配之动态设置单个控件的宽高比例 前言:这个问题出现在我做平板项目的时候,需要横排显示一张图片以及其他控件,如下图: 要求图、文各占一半大小,图片的宽高比例目测是1:2。这种情况不适
android:layout_weight="1"//权重,控制控件之间的地位,在控制控件显示的大小时蛮有用的。 android:textAppearance="?android:attr/textAppearanceLargeInverse"//文字外观 android:layout_gravity="center_vertical...
AlertDialog的方法和android中自带的用法相似,ActionSheetDialo的用法和AlertDialog差不多,基本的使用思路是:获取Dialog布局、获取自定义Dialog布局中的控件、定义Dialog布局和参数、调整dialog背景大小等。
重写onMeasure 测量控件大小 3.重写onDraw 绘制控件 2.根据需求在attrs文件中自定义属性 declare-styleable 声明自定义属性可以自定义一个新属性也可以引用已经存在的属性两者的区别就是新属性需要添加format进行...
是 Android 上的一个异步从网络上获取图片并进行浏览的开源组件,可自动在本地进行缓存。该项目是 GreenDroid 的一部分。 13、仿Path按钮动画效果 PathButton 仿照Path应用首页左下角的Button动画效果写了个简单的...
本文主要介绍使用javacript获取当前屏幕大小的方法,需要的朋友可以参考下。
这是我自己写的一个控件,...用法:需要在xml布局文件中指定一个LinearLayout或者与之同级的布局,在代码中获取到他,然后在代码中通过addView(自定义控件view)这样加入我的这个自定义控件,可以指定字体颜色,字体大小
可以直接在android手机屏幕上显示当前Activity中所有控件(不管是否隐藏)的边界,内外边距大小,每一个控件大小,图片大小,字体颜色,大小,以及自定义信息。同时可以直接在屏幕上取色,另外还提供了直尺(单位为...
本文实例为大家分享了Android自定义View拖拽缩放矩形框的具体代码,供大家参考,具体内容如下 在开发项目中,需要一个矩形框来实现截屏功能,并且还需要可以任意拖拽和缩放,这就需要自定义View来实现了,具体功能...