开发者社区> 技术小甜> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

android——获取view的宽高

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

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

2. 解决办法:

(1)直接测量:

1
2
3
4
5
6
7
8
9
10
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 width2 = textView.getMeasuredWidth();
        System.out.println("first: 宽: " + width2 + "  高: " + height1);
    }

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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)添加整体布局监听

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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);
            }
 
        });
    }














本文转自wauoen51CTO博客,原文链接:http://blog.51cto.com/7183397/1606535 ,如需转载请自行联系原作者


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【Android开发】 ListView使用实战详解,你get到了嘛?
【Android开发】 ListView使用实战详解,你get到了嘛?
53 0
【Android 应用开发】Android开发技巧--Application, ListView排列,格式化浮点数,string.xml占位符,动态引用图片
【Android 应用开发】Android开发技巧--Application, ListView排列,格式化浮点数,string.xml占位符,动态引用图片
88 0
Android开发之ListView使用经验分享
在Android开发中,ListView是使用最广泛的组件之一,虽然谷歌推出了RecycleView,但是很多项目中依旧在使用ListView,本文将总结一下使用过程中遇到的一些问题,与大家共勉~~~ 一、ListView 与 Adapter List...
760 0
Android开发重要参考资料
=======================博客============================= 秋百万 有心课堂 郭霖 源码 安装ffmpeg 胡凯 官方培训课程 litesuitsway 爱哥 trinea robinRobin Hu...
828 0
+关注
10136
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载