我想为FrameLayout
添加一个新视图,但它只能“有时”工作。
例如:我已经为我的布局设置了OnClickListener
(在活动的onCreate方法内),它为布局添加了一个新视图(这是有效的)。在活动的run-method中,我使用完全相同的代码来添加这样的视图,但视图没有显示出来。我不知道为什么......
以下是一些代码:
OnClickListener
,它为布局添加了一个新视图,实际显示了视图。 layout
是FrameLayout
,obstacles
是对象列表。
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);
}
});
如果陈述为真,则不显示新视图,但障碍物的大小和布局的子计数均增加1
if(checkForNew()){
obstacles.add(new Obstacle(getBaseContext(), 0, (int) ((scale * 570) / 8), scale));
layout.addView(obstacles.get(obstacles.size() - 1).view);
}
Obstacle
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);
}
答案 0 :(得分:1)
这是FrameLayout
,视图将在彼此之上。
您似乎没有在任何地方更改比例,并且您的保证金始终固定为0, (scale * someValue)
您需要为添加的视图应用不同的比例和/或使用不同的顶部/左侧参数。