即使layout_height设置为wrap_content,自定义视图对象也会占用整个屏幕高度

Bru*_*Lee 5 android view android-widget

我创建了一个扩展android.view.View,覆盖draw()并在屏幕上显示的对象.为了让你进入图片,它是一个数字显示,代表一个游戏分数.它正确地水平显示,然而,它占据了屏幕的整个高度 - 将所有其他元素推离屏幕.

我已经放入layout_height="wrap_content"了xml,但它没有效果.

有谁知道我做错了什么?

Bru*_*Lee 5

我已经弄清楚了......

我应该覆盖onDraw(),但这不是导致问题的原因.

最重要的是,我需要覆盖onMeasure(),如下所示:

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    setMeasuredDimension(DIGIT_WIDTH * getNumberOfDigits(), DIGIT_HEIGHT);
}
Run Code Online (Sandbox Code Playgroud)

DIGIT_WIDTH并且DIGIT_HEIGHT是设置为我使用的每个数字图像的尺寸的常数.getNumberOfDigits()只是xml属性中自定义属性集的getter.

希望能帮助其他人遇到这个问题.