android 初始化时获得控件位置,宽高的属性

我们再oncreate()方法中获取控件的位置,宽高等属性,取到的值为0,因为控件执行到onMeasure()方法,才能计算这些值,而onCreate()方法在onMeasure()方法之前执行。

可以通过 ViewTreeObserver这个类来监听控件的变化。


void addOnDrawListener(ViewTreeObserver.OnDrawListener listener)

Register a callback to be invoked when the view tree is about to be drawn.
void 	addOnGlobalFocusChangeListener(ViewTreeObserver.OnGlobalFocusChangeListener listener)
Register a callback to be invoked when the focus state within the view tree changes.
void 	addOnGlobalLayoutListener(ViewTreeObserver.OnGlobalLayoutListener listener)
Register a callback to be invoked when the global layout state or the visibility of views within the view tree changes
void 	addOnPreDrawListener(ViewTreeObserver.OnPreDrawListener listener)
Register a callback to be invoked when the view tree is about to be drawn
void 	addOnScrollChangedListener(ViewTreeObserver.OnScrollChangedListener listener)
Register a callback to be invoked when a view has been scrolled.
void 	addOnTouchModeChangeListener(ViewTreeObserver.OnTouchModeChangeListener listener)
Register a callback to be invoked when the invoked when the touch mode changes.
void 	addOnWindowAttachListener(ViewTreeObserver.OnWindowAttachListener listener)
Register a callback to be invoked when the view hierarchy is attached to a window.
void 	addOnWindowFocusChangeListener(ViewTreeObserver.OnWindowFocusChangeListener listener)
</pre><p></p><p>代码示范:</p><p><pre name="code" class="java">tname.getViewTreeObserver().addOnGlobalLayoutListener(
				new OnGlobalLayoutListener() {

					@Override
					public void onGlobalLayout() {
						if (flag) {
							flag = false;
							int[] point = new int[2];
							// int imageViewWidth = proposal_img.getWidth();

							proposal_textView.getLocationInWindow(point);
							
						}
					}
				});


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值