如何在Oncreate中获取TextView的宽度?

有人知道在Oncreate中如何获取TextView的宽度吗?用textview.getwidth()和getMeasuredWidth()获取的都是0.我们都知道获取宽... 有人知道在Oncreate中如何获取TextView的宽度吗?用textview.getwidth()和getMeasuredWidth()获取的都是0.我们都知道获取宽度要等页面布局完之后才能获取到?但有没有什么办法可以在Oncreate下获取到?因为本人在做一个项目,要知道每个view的宽度!有没有牛人知道怎么做啊,小弟感激不尽!!谢谢 展开
 我来答
爱死了昨天权
高粉答主

推荐于2016-10-21 · 醉心答题,欢迎关注
知道大有可为答主
回答量:1.1万
采纳率:91%
帮助的人:720万
展开全部
  在Oncreate中获取TextView的宽度
  在onCreate()里是获取不到控件的width,height的,这个时候控件都没有measure,layout完毕,所以获取到的结果都是0。要获取控件的宽度、高度必须在measure、layout过程完毕之后。
  有2种方法:
  1.如lss所讲的一样:
  ViewTreeObserver vto = mBtnSend.getViewTreeObserver();
  vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
  @Override
  public void onGlobalLayout() {
  int height = mBtnSend.getMeasuredHeight();
  int width = mBtnSend.getMeasuredWidth();
  System.out.println("height:" + height + " " + "width:" + width);
  }
  });
  2.在Activity里重写方法
  public void onWindowFocusChanged(boolean hasFocus);

  在窗口第一次获得焦点的时候,肯定能获取到控件的width,height。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-09-24
展开全部
oncreate的时候,view还没有初始化完, view的 onLayout 方法里才知道大小,所以你可以 override view的onLayout ,在那里获得宽高。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-09-24
展开全部
我找到解决方法了,请参考。LayoutParams tvPara = (LayoutParams) m_tv.getLayoutParams(); m_tv.requestLayout(); m_iTextWidth = tvPara.width;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-09-24
展开全部
Add this to your activity's onCreateViewTreeObserver vto = layout.getViewTreeObserver(); vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { @Override public void onGlobalLayout() { You should be able to get the width and height over here. layout.getViewTreeObserver().removeGlobalOnLayoutListener(this); } });
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式