【问题标题】:Android Custom View onSizeChanged Units?Android 自定义视图 onSizeChanged 单位?
【发布时间】:2017-09-05 00:16:52
【问题描述】:

我正在创建一个 Android 自定义视图并覆盖该视图的

void onSizeChanged(int w, int h, int oldw, int oldh)

当我使用值创建布局时,w 和 h 的值是 300:

android:layout_width="100dp" android:layout_height="100dp"

我无法找到有关 w 和 h 参数所用单位的文档。它们以像素为单位吗?

【问题讨论】:

  • "它们是像素吗?" - 是的。
  • 像素。代码中的所有维度都是像素。如果需要,您可以从 DP 转换。

标签: android layout android-custom-view units-of-measurement


【解决方案1】:

是的,它们以像素为单位,您可以将 dps 转换为像素供您使用。

float px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 14, r.getDisplayMetrics());

通过这种方式,您可以获得具有所需 dp 的像素,并在代码中相应地使用它们。希望这会有所帮助:)

【讨论】:

    【解决方案2】:

    调用此函数时,视图大小发生了变化 如果我们改变显示尺寸代码,我们可以把这个函数的高度和宽度,在函数内部使用这些参数作为一个新的维度。

    喜欢下面的代码

        @Override
    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
        super.onSizeChanged(w, h, oldw, oldh);
        if (mHeight == 0 && mWidth == 0 && w != 0 && h != 0) {
            mHeight = getHeight();
            mWidth = getWidth();
        }
    }
    

    现在,每当高度和宽度发生变化时,我都可以使用它并享受它:):)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-11
      • 2013-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多