【问题标题】:Android - getting the width of a button which is set to wrap_contentAndroid - 获取设置为 wrap_content 的按钮的宽度
【发布时间】:2011-12-08 05:30:22
【问题描述】:

我正在尝试获取将android:layout_width 设置为wrap_content 的按钮的宽度。当我尝试在onCreate() 中使用getMeasuredWidth() 执行此操作时,我得到的值为零,因为我认为视图尚未准备好。

那么我应该什么时候得到宽度呢?当视图完成初始化时,我可以挂接任何侦听器吗?

【问题讨论】:

    标签: android button view width


    【解决方案1】:

    您可以在布局中添加树观察者。这应该返回正确的宽度和高度。在子视图的布局完成之前调用 onCreate。所以宽度和高度还没有计算出来。获取高度和宽度。把它放在 onCreate 方法上

    LinearLayout layout = (LinearLayout)findViewById(R.id.YOUD VIEW ID); 
    ViewTreeObserver vto = layout.getViewTreeObserver();  
    vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {  
        @Override  
        public void onGlobalLayout() {  
            this.layout.getViewTreeObserver().removeGlobalOnLayoutListener(this);  
            int width  = layout.getMeasuredWidth(); 
            int height = layout.getMeasuredHeight();  
    
        }  
    }); 
    

    【讨论】:

    • 仅供参考:removeGlobalOnLayoutListener 在较新的 API 中已弃用,现在为 removeOnGlobalLayoutListener。欲了解更多信息:stackoverflow.com/a/16190337/487940
    猜你喜欢
    • 2023-03-23
    • 2013-04-07
    • 1970-01-01
    • 1970-01-01
    • 2013-05-31
    • 1970-01-01
    • 1970-01-01
    • 2012-12-21
    • 1970-01-01
    相关资源
    最近更新 更多