Android <;中的TextView.getMinHeight();16 API

Android <;中的TextView.getMinHeight();16 API,android,Android,出现在API 16中。但是出现在API 1中。在API 16之前的版本中,哪里有可能不经过反射而获得最小高度?简短回答: View.getLayoutParams().height View.getLayoutParams().width 其他可能性: 视图的大小用宽度和高度表示。视图实际上具有两对宽度和高度值 第一对称为测量宽度和测量高度。这些尺寸定义视图在其父视图中的大小(有关更多详细信息,请参见布局)。可以通过调用getMeasuredWidth()和getMeasuredHeight

出现在API 16中。但是出现在API 1中。在API 16之前的版本中,哪里有可能不经过反射而获得最小高度?

简短回答:

View.getLayoutParams().height 
View.getLayoutParams().width
其他可能性:

视图的大小用宽度和高度表示。视图实际上具有两对宽度和高度值

第一对称为测量宽度和测量高度。这些尺寸定义视图在其父视图中的大小(有关更多详细信息,请参见布局)。可以通过调用getMeasuredWidth()和getMeasuredHeight()获得测量尺寸

第二对简单地称为宽度和高度,有时称为绘图宽度和绘图高度。这些尺寸定义了绘制时和布局后屏幕上视图的实际大小。这些值可能(但不一定)不同于测量的宽度和高度。通过调用getWidth()和getHeight()可以获得宽度和高度

方式:

  • 使用著名的OnGlobalLayoutListener

    这是获取视图尺寸最常用的机制之一。将全局布局侦听器附着到视图层次。它可以帮助您实际获得视图继承权中所有视图的宽度:

  • 通过强制对视图进行测量

    View.measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED);
    int widht = View.getMeasuredWidth();
    int height = View.getMeasuredHeight();
    

    • 没有思考就无法获得它

      该字段称为mMaximum。它可以以像素或文本行为单位保存值,这就是为什么它不被称为mMaxHeight


      在setMaxHeight()中保存该值并不理想,因为还有setMaxLines()方法,它可以更改最大模式并有效地清除最大高度值。您必须重载所有写入最大值字段的方法。

      使用support-v4库中的
      ViewCompat.getMinimumHeight(view)

      只是一个想法(不检查代码)-扩展TextView并编写您自己的getMinHeight?并重写setMinHeight,以便在调用super之前将其存储在子类中。@max good point。这在大多数情况下都有效。但是如果我使用的是lib呢?你的方法很痛苦。也许还有其他方法。好吧,我想知道另一种方法:)我在API 16中引入的TextView.getLineSpacingExtra()方法也有类似的问题,虽然从API 1开始就有备份字段,但我最终在16以下的版本中使用了反射。只是尝试使用反射,但没有成功(在api 16之前的版本中,似乎没有名为mMinHeight的私有字段)。我找到的最好方法是将minimumHeight定义为一个dimen值,然后使用getResources()读取它。getDimension(R.dimen.my_dimen);问题是关于minimumHeight not MeasuredHeight这个方法实际上是使用反射从