android——获取view的宽高

  1. 在activity生命周期方法:onCreate(),onStart(),onResume()中调用View.getWidth()和View.getHeight()方法获取View的高度是不可行的,因为此时布局没有加载是不可见状态。

    创新互联建站专注于宜昌企业网站建设,响应式网站,商城系统网站开发。宜昌网站建设公司,为宜昌等地区提供建站服务。全流程按需求定制开发,专业设计,全程项目跟踪,创新互联建站专业和态度为您提供的服务

    还有当view的可见状态为:GONE,时获取的宽高也是0;

2. 解决办法:

(1)直接测量:

private void first() {
		int width = View.MeasureSpec.makeMeasureSpec(0,
				View.MeasureSpec.UNSPECIFIED);
		int height = View.MeasureSpec.makeMeasureSpec(0,
				View.MeasureSpec.UNSPECIFIED);
		textView.measure(width, height);
		int height1 = textView.getMeasuredHeight();
		int width3 = textView.getMeasuredWidth();
		System.out.println("first: 宽: " + width3 + "  高: " + height1);
	}

(2)添加绘制view之前的监听

private void second() {
		ViewTreeObserver vto = textView.getViewTreeObserver();

		vto.addOnPreDrawListener(new

		ViewTreeObserver.OnPreDrawListener() {

			public boolean onPreDraw() {

				int height = textView.getMeasuredHeight();

				int width = textView.getMeasuredWidth();

				System.out.println("second:  宽:" + width + "  高: " + height);

				return true;
			}

		});
	}

(3)添加整体布局监听

private void third() {
		ViewTreeObserver vto = textView.getViewTreeObserver();

		vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {

			public void onGlobalLayout() {

				textView.getViewTreeObserver().removeGlobalOnLayoutListener(
						this);

				int height = textView.getMeasuredHeight();

				int width = textView.getMeasuredWidth();
				System.out.println("third:  宽:" + width + "  高: " + height);
			}

		});
	}

分享名称:android——获取view的宽高
浏览路径:http://bzwzjz.com/article/jjoidp.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 手机网站建设套餐 营销网站建设 营销型网站建设 成都网站建设 成都网站制作 成都企业网站制作 成都网站设计 定制网站建设 网站制作 成都网站建设 品牌网站建设 成都网站制作 高端网站设计 成都网站设计 网站设计 高端网站设计 四川成都网站制作 网站制作 重庆网站制作 网站建设公司 网站建设费用 成都网站设计