我一直在试图找到解决这个问题的方法,但也许我并没有理解Android中的"onMeasure()"方法如何工作!
这是我第一次在Android中创建"动态"自定义视图,所以我学到了需要重写"onMeasure()"方法,以便根据屏幕大小调整您的视图大小。 我希望我的视图宽度为屏幕宽度的一半,再加上一点额外的空间(这个数字是任意的,只要相对较小,在3和5之间),因此我编写了以下代码:
@Override
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
{
int halfWidth = (MeasureSpec.getSize(widthMeasureSpec) / 2) - 5;
this.setMeasuredDimension((int) halfWidth, (int) halfWidth);
}
我确定这种方式做事情是很糟糕的,因为我在网上找到的每个地方都比我尝试实现类似功能的代码要多得多!
当我将这些视图并排放置在XML中时,第一个视图的大小正确(确实是屏幕宽度的一半再减少一点),但第二个视图要小得多,可能只有上一个视图宽度的一半再减少一点!(我会发布一张图片,但不幸的是我没有足够的声望这样做...)
应该发生的是无论我将它们放在XML的什么位置,这两个框都应该是相同的大小。它们应该都是屏幕宽度的一半再减去一点额外的空间。
我知道这与我使用的“setMeasuredDimension()”有关,但我不知道是什么。我真的希望有人能为我澄清一下!谢谢! :)