我有一个Ball类扩展View.Inside那里我给出一些特性并实现onTouchEvent()所以我可以处理运动。我也使用onDraw所以我可以绘制球的位图。在我的活动类中,我创建了一个新的布局,我将视图添加到它,以便可以显示它。一切正常,除非当我尝试在我的布局中添加更多的球时,它们不会出现!总是首先添加在布局球中! 这是活动类的onCreate代码:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout ll = new LinearLayout(this);
ll.setOrientation(LinearLayout.HORIZONTAL);
int lHeight = LinearLayout.LayoutParams.WRAP_CONTENT;
int lWidth = LinearLayout.LayoutParams.WRAP_CONTENT;
Point point1 = new Point();
point1.x = 50;
point1.y = 20;
Point point2 = new Point();
point2.x = 100;
point2.y = 20;
Point point3 = new Point();
point3.x = 150;
point3.y = 20;
ColorBall ball1 = new ColorBall(this,R.drawable.bol_groen, point1);
ll.addView(ball1, new LinearLayout.LayoutParams(lHeight, lWidth));
setContentView(ll);
ColorBall ball2 = new ColorBall(this,R.drawable.bol_rood, point2);
ll.addView(ball2, new LinearLayout.LayoutParams(lHeight, lWidth));
setContentView(ll);
ColorBall ball3 = new ColorBall(this,R.drawable.bol_blauw, point3);
ll.addView(ball3, new LinearLayout.LayoutParams(lHeight, lWidth));
setContentView(ll);
}
可能是什么问题?我也尝试了最后只有一个setContentView()。我在想我不能使用布局,所以我可以绘制自定义视图中的位图!我是对? 我应该更改我的代码并创建一个View并在里面创建一个包含我想要显示的所有球的数组,然后将此View设置为从我的主要活动类中显示?(就像这个setContentView(customview))。
答案 0 :(得分:0)
您正在多次调用setContentView
,而每次活动初始化时只需调用一次。
<强>更新强>:
您可以使用此布局xml而不是您使用的编程方式吗?这只是为了100%确定你要添加ColorBalls的容器是好的。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:id="@+id/container"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
以防万一,以下是将其包含在活动中的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.your_name_of_layout);
LinearLayout container = (LinearLayout) findViewById(R.id.container);
..
container.addView(ball1);
container.addView(ball2);
..
}