android如何获取控件宽度

如下列代码,经测试,Toast显示width2确实为控件TextView的宽度,但显示的width1仍然为初始值0,如何将width2的值赋给全局变量width1呢?求大... 如下列代码,经测试,Toast显示width2确实为控件TextView的宽度,但显示的width1仍然为初始值0,如何将width2的值赋给全局变量width1呢?求大神们指教!

public class MainActivity extends Activity {
private TextView txt = null;
private int width1 = 0;

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

txt = (TextView) findViewById(R.id.txt);
ViewTreeObserver vto = txt.getViewTreeObserver();

vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
public boolean onPreDraw() {
int width2 = txt.getMeasuredWidth();
Toast.makeText(getApplication(), "width2:" + width2, Toast.LENGTH_SHORT).show();
width1 = width2;
return true;
}
});

Toast.makeText(getApplication(), "width1:" + width1, Toast.LENGTH_SHORT).show();
}
}
展开
 我来答
百度网友1493138c0
推荐于2016-02-27 · TA获得超过1459个赞
知道小有建树答主
回答量:423
采纳率:50%
帮助的人:372万
展开全部
用getWidth()方法,可以获取像素单位的宽度。

android的控件一般是继承的android.View这个类,所以可以直接用View#getWidth()方法获取控件宽度。另外这个方法是final方法,无法被子类覆盖,所以可以安心调用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
安卓范
2013-07-20
知道答主
回答量:43
采纳率:0%
帮助的人:22.6万
展开全部
是不是第二个Toast比第一个先输出? 如果是,问题就在于监听器的回调方法执行时间比第二个Toast晚。
追问
我是想在程序一开始运行的时候就能获取width2的值并用于其它计算,请问该如何获取width2的值?
追答
把你的逻辑代码写在onPreDraw回调方法里
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式