gpt4 book ai didi

java - 如何调用 onMeasure 方法? - 安卓

转载 作者:行者123 更新时间:2023-12-01 07:26:29 26 4
gpt4 key购买 nike

我有一项 Activity 和一种 View 。此 View 的目的是显示方形网格。正方形边长等于屏幕宽度除以水平存在的正方形数量。

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getValues();
createLayout();
}

public static int top;
public static int side;

private void getValues() {
top = 5; //squares horizontally
side = 6; //squares vertically
}

private void createLayout() {
BoardView bv = new BoardView(this);
bv.setBackgroundColor(Color.BLUE);
setContentView(bv);
bv.createGuideLines();
}

我已经很难创建具有自定义高度的 View ,我这样做了:

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
squareSide = MeasureSpec.getSize(widthMeasureSpec)/top;
setMeasuredDimension(MeasureSpec.getSize(widthMeasureSpec),squareSide*side);
}

public void createGuideLines() {
for(int c = 1; c<=side; ++c) {
path.moveTo(c*squareSide, 0);
path.lineTo(c*squareSide, squareSide*top);
}
for(int l = 1; l<=side; ++l) {
path.moveTo(0, l*squareSide);
path.lineTo(side*squareSide, l*squareSide);
}
invalidate();
}

问题是,当我调试时,squareSide 变量的值为 0。我认为 onMeasure() 可能是在 createGuideLines() 之后调用的。如果我之前调用它,可以解决我的问题吗?我在文档中看到有一个方法 requestLayout() 调用 onMeasure() 方法,但我不知道如何实现它。

感谢您的宝贵时间。

最佳答案

requestLayout 调用添加到 createLayout 方法

private void createLayout() {
BoardView bv = new BoardView(this);
bv.setBackgroundColor(Color.BLUE);
setContentView(bv);
bv.createGuideLines();
bv.requestLayout(); // requestLayout call
}

关于java - 如何调用 onMeasure 方法? - 安卓,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23789206/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com