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

6
我创建了一个继承自android.view.View的对象,并重写了draw()方法,它可以在屏幕上显示。简单来说,这是一个用数字表示游戏得分的显示器。水平方向上它能正确地显示,但是它占据了整个屏幕的高度,将所有其他元素都挤出了屏幕。
我在xml文件中设置了layout_height="wrap_content",但没有效果。
有没有人知道我做错了什么?
1个回答

6

我已经明白了...

我本来应该重写onDraw(),但那并不是引起问题的原因。

主要的问题在于,我需要像这样重写onMeasure():

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    setMeasuredDimension(DIGIT_WIDTH * getNumberOfDigits(), DIGIT_HEIGHT);
}

DIGIT_WIDTHDIGIT_HEIGHT 是常量,设置为我使用的每个数字图像的尺寸。 getNumberOfDigits() 只是一个从 XML 属性设置的自定义属性的 getter。

希望这对于其他遇到此问题的人有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接