gpt4 book ai didi

java - addView方法不显示新 View

转载 作者:行者123 更新时间:2023-12-01 10:32:22 27 4
gpt4 key购买 nike

我想向 FrameLayout 添加一个新 View ,但它只能“有时”工作。例如:我已经为我的布局(在 Activity 的 onCreate 方法内)设置了一个 OnClickListener ,它向布局添加了一个新 View (这有效)。在 Activity 的运行方法中,我使用完全相同的代码来添加这样的 View ,但该 View 没有显示。我不知道为什么...

这是一些代码:

OnClickListener,它向布局添加一个新 View ,并且该 View 实际显示。 layoutFrameLayoutobstacles 是一个对象列表。

layout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
obstacles.add(new Obstacle(getBaseContext(), 0, (int) ((scale * 570) / 8), scale));
layout.addView(obstacles.get(obstacles.size() - 1).view);

}
});

如果语句为 true,则不会显示新 View ,但障碍物的大小和布局的子计数都会增加 1

if(checkForNew()){
obstacles.add(new Obstacle(getBaseContext(), 0, (int) ((scale * 570) / 8), scale));
layout.addView(obstacles.get(obstacles.size() - 1).view);
}

障碍物的构造函数

public Obstacle(Context con, int left, int top, float scale) {
view = new ImageView(con);
view.setBackgroundColor(Color.rgb(0, 0, 0));
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams((int)(scale*150), (int)(scale*20));
params.setMargins(left,top,0,0);
view.setLayoutParams(params);
view.setMaxWidth(view.getLayoutParams().width);
view.setMaxHeight(view.getLayoutParams().height);
}

这正在改变观点:

public void Move( View view, float speed, float scale){
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(view.getWidth(), view.getHeight());
params.setMargins(view.getLeft(), view.getTop() - (int) (scale * -speed), 0, 0);
view.setLayoutParams(params);
}

最佳答案

这是一个 FrameLayout, View 将彼此叠置

您似乎没有在任何地方更改比例,并且您的边距始终固定为 0, (scale * someValue)

您需要为添加的 View 应用不同的比例和/或使用不同的顶部/左侧参数。

关于java - addView方法不显示新 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35021109/

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