如何获得宽度和调整自定义视图的高度,这是之前绘制(How to get width and heig

2019-10-24 02:09发布

在我的自定义视图的.xml,我已定义宽度和高度w = 600dp , h = 700dp 。 现在我知道图绘后getMeasuredHeight()/ getMeasuredWidth()给宽度和高度的价值,他们可以从我的.xml文件已经给什么不同,有一种解决方法获得getMeasuredHeight()getMeasuredWidth()前值观点实际上是吸取了布局,而无需使用onMeasure()

以及如何计算改变了dp在不同的屏幕尺寸? 像我600h*700w当在模拟器上运行转换为300*300

Answer 1:

您可以覆盖onSizeChanged()来获取视图的高度和宽度,当它低于drawn.refer:

  @Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
    mWidth = w;
    mHeight = h;
    super.onSizeChanged(w, h, oldw, oldh);
    Log.d(TAG, "onSizeChanged: " + " width: " + w + " height: " + h + " oldw " + oldw + " oldh " + oldh);
}

为了DP转换为像素,您可以使用下面的代码:

   sizeInPixels = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
            sizeInDp, getResources().getDisplayMetrics());


文章来源: How to get width and height of resized custom view , before it is drawn