Android - 获取设置为 wrap_content 的按钮的宽度

Posted

技术标签:

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

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

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

【问题讨论】:

【参考方案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。欲了解更多信息:***.com/a/16190337/487940

以上是关于Android - 获取设置为 wrap_content 的按钮的宽度的主要内容,如果未能解决你的问题,请参考以下文章

Android:如何将高度设置为 wrap_content?

android解决Viewpager设置高度为wrap_content无效的方法

android中的wrap_content,match_parent, fill_parent

获取 WRAP_CONTENT 高度是多少

ListView 的高度填满整个屏幕,虽然设置为 wrap_content

带有 wrap_content 的 Android 7 WebView