gpt4 book ai didi

android - 在 ViewGroup 中添加 View

转载 作者:行者123 更新时间:2023-11-30 03:19:50 27 4
gpt4 key购买 nike

我正在尝试在 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 只是其他布局的基类,它本身不做任何事情。我建议使用它的后代之一,例如 FrameLayoutLinearLayout


如果您正在创建绘图应用程序,可能使用 Canvas 而不是使用自定义布局会更好。 Canvas 已经提供了几种绘制直线、圆、矩形等的方法。如果您希望之后能够移动一个元素,您将需要做一些工作。

Draw with a Canvas

关于android - 在 ViewGroup 中添加 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19359378/

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