Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 视图组的自定义子视图为';他没有出现。如何将自定义视图添加到扩展视图组的类中?_Android_Android Custom View_Mobile Application - Fatal编程技术网

Android 视图组的自定义子视图为';他没有出现。如何将自定义视图添加到扩展视图组的类中?

Android 视图组的自定义子视图为';他没有出现。如何将自定义视图添加到扩展视图组的类中?,android,android-custom-view,mobile-application,Android,Android Custom View,Mobile Application,我正在尝试创建一个小型的砖块破解游戏 到目前为止,我有一个MainActivity.java、BrickBreakerView.java和一个paile.java。BrickBreakerView扩展了ViewGroup类,而Pable扩展了View类。我希望能够在BrickBreakerView中添加一个桨、砖块、球和记分板(我将创建的自定义视图类)。基本上,BrickBreakerView将控制这些视图的交互 MainActivity的xml布局向布局中添加了一个BrickBreakerVi

我正在尝试创建一个小型的砖块破解游戏

到目前为止,我有一个MainActivity.java、BrickBreakerView.java和一个paile.java。BrickBreakerView扩展了ViewGroup类,而Pable扩展了View类。我希望能够在BrickBreakerView中添加一个桨、砖块、球和记分板(我将创建的自定义视图类)。基本上,BrickBreakerView将控制这些视图的交互

MainActivity的xml布局向布局中添加了一个BrickBreakerView。BrickBreakerView在onCreate方法中实例化了一个拨片,它还将该拨片添加为子视图(addView())

我已经覆盖了拨片的onDraw方法,在给定的X和Y位置绘制了一个蓝色矩形。然而,当我运行我的程序时,我在屏幕上看不到任何东西。我已经使用Log.d进行了测试,以检查是否调用了BrickBreakerView和Bapper的构造函数

谢谢你的帮助!另外,我是Android开发新手,如果你们能给我一些关于我的游戏结构的评论,我将不胜感激:D

下面是相关的代码片段

这在我的主要活动中称为:

 setContentView(R.layout.main);
My main.xml看起来像: .碎砖场

    android:id="@+id/mainView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    />
BrickBreakerView.java类:

 public class BrickBreakerView extends ViewGroup{

public BrickBreakerView(Context context, AttributeSet attrs) {
    super(context, attrs);
    setBackgroundColor(Color.GRAY);
    Paddle paddle = new Paddle(context, 100, 400);
    paddle.setYPosition(400);
    addView(paddle);
    Log.d("print", "Brick Breaker View constructor");
}

@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
    // TODO Auto-generated method stub
    Log.d("print", "onLayout called");
}
 public class Paddle extends View{

private int myX, myY;

public Paddle(Context context, int xPos, int yPos) {
    super(context);
    // TODO Auto-generated constructor stub
    Log.d("print", "paddle constructor");
    myX = xPos;
    myY = yPos;
    invalidate();
}
public void setXPosition(int x) {
    myX = x;
    invalidate();
}
public void setYPosition(int y) {
    myY = y;
    invalidate();
}
@Override
protected void onDraw(Canvas canvas) {
    // TODO Auto-generated method stub

    Log.d("print", "onDraw called");
    super.onDraw(canvas);
    Paint paint = new Paint();
    paint.setColor(Color.BLUE);
    canvas.drawRect(myX, myY, myX+100, myY+50, paint);
}
}

java类:

 public class BrickBreakerView extends ViewGroup{

public BrickBreakerView(Context context, AttributeSet attrs) {
    super(context, attrs);
    setBackgroundColor(Color.GRAY);
    Paddle paddle = new Paddle(context, 100, 400);
    paddle.setYPosition(400);
    addView(paddle);
    Log.d("print", "Brick Breaker View constructor");
}

@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
    // TODO Auto-generated method stub
    Log.d("print", "onLayout called");
}
 public class Paddle extends View{

private int myX, myY;

public Paddle(Context context, int xPos, int yPos) {
    super(context);
    // TODO Auto-generated constructor stub
    Log.d("print", "paddle constructor");
    myX = xPos;
    myY = yPos;
    invalidate();
}
public void setXPosition(int x) {
    myX = x;
    invalidate();
}
public void setYPosition(int y) {
    myY = y;
    invalidate();
}
@Override
protected void onDraw(Canvas canvas) {
    // TODO Auto-generated method stub

    Log.d("print", "onDraw called");
    super.onDraw(canvas);
    Paint paint = new Paint();
    paint.setColor(Color.BLUE);
    canvas.drawRect(myX, myY, myX+100, myY+50, paint);
}

}

将拨杆实例设为断砖视图的成员变量。 创建并将其添加到视图组-您正在执行此操作。 在联机布局中,放置桨布局(0,0100)