【问题标题】:getting the width and height when using wrap content使用换行内容时获取宽度和高度
【发布时间】:2011-11-03 21:20:36
【问题描述】:

在从视图中获取坐标或大小时,我有点困惑。有时,当我使用布局参数使用 WRAP_CONTENT,并尝试通过布局参数检索宽度时,我将获得 WRAP_CONTENT 的 CONSTANT 值,以及 getWidth()、getHeight()、getX()、getY()、getLeft () 或任何类似于获取大小和坐标的方法都行不通。

如何实现包装内容后,可以取回视图本身的实际值。

有人可以帮我解决这个问题吗?谢谢。

【问题讨论】:

    标签: java android layout android-layout


    【解决方案1】:
    int wrapSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
    view.measure(wrapSpec, wrapSpec);
    

    之后view.getMeasuredWidth()view.getMeasuredHeight() 应该返回有效的宽度和高度。

    注意:UNSPECIFIED 是一种比选择非常大的限制更好的方法。

    【讨论】:

      【解决方案2】:

      你应该使用getMeasuredWidth()getMeasuredHeight()

      【讨论】:

      • 总是得到 0 。有什么解决办法吗?
      • @Ram 您必须在布局视图后调用它。例如,在 onCreate() 期间调用它是行不通的,因为尚未测量尺寸。如果需要,您可以设置回调以了解 yourView 何时已布局:yourView.getViewTreeObserver().addOnGlobalLayoutListener(...)
      猜你喜欢
      • 2016-09-11
      • 1970-01-01
      • 2016-03-25
      • 2017-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-17
      相关资源
      最近更新 更多