我正在尝试在 ViewGroup 的 onTouchEvent 上向 ViewGroup 添加一个 View,代码如下:
ViewGroup mDrawingCanvas = new ViewGroup(mContext)
{
@Override
public boolean isFocused() {
// TODO Auto-generated method stub
Log.d(TAG, "View's On focused is called !");
return super.isFocused();
}
@Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
View vv = new View(mContext);
vv.setBackgroundColor(Color.GREEN);
vv.setLayoutParams(new LayoutParams(200, 200));
this.addView(vv);
Toast.makeText(mContext, "Views child count = "+this.getChildCount(), Toast.LENGTH_SHORT).show();;
break;
return true;
}
@Override
protected void onLayout(boolean changed, int l, int t, int r,
int b) {
// TODO Auto-generated method stub
}
};
View 被添加到 Viewgroup,Toast 在每个 Touch Down 事件中显示更多的 View 计数,但 View 没有显示在 ViewGroup 的 Screen 上。
我在 StackOverflow 上看到了相关问题,但我的问题是独特且不同的。
请指导我如何解决这个问题,非常感谢任何帮助。
P.S: 我也曾尝试在将 View 添加到 ViewGroup 之前设置 View 的布局参数,但得到的结果相同。将 View 添加到 ViewGroup 后,我还在 LogCat 中打印了 View 的宽度和高度,它始终显示 0。我认为问题出在 View 的宽度和高度设置上。
最佳答案
如果您使用的是自定义 ViewGroup
,则必须实现 onLayout
方法才能显示任何内容。
ViewGroup
只是其他布局的基类,它本身不做任何事情。我建议使用它的后代之一,例如 FrameLayout
或 LinearLayout
。
如果您正在创建绘图应用程序,可能使用 Canvas
而不是使用自定义布局会更好。 Canvas
已经提供了几种绘制直线、圆、矩形等的方法。如果您希望之后能够移动一个元素,您将需要做一些工作。
关于android - 在 ViewGroup 中添加 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19359378/