android - 在 ViewGroup 中添加 View

标签 android view viewgroup

我正在尝试在 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/

相关文章:

android应用程序在运行时找不到字符串资源

android - 如何使用 android-maps-utils 更改点击的标记图标?

design-patterns - 在 MVVM 模式中,模型和 View 什么时候直接相互通信?

android - ViewGroups 的一个 Animate Layout 属性是如何实现的?

android - 将 XML 布局扩展到自定义 ViewGroup

android - 发现多个文件的操作系统独立路径为 'org/apache/http/client/version.properties'

android - WebView android 应用程序中的推送通知

sql - 使用触发器和插入过程将数据插入 View 时如何避免 "blank"插入?

mysql - 根据 mysql 中另一个表的数据构建是/否列

android - 在某些 subview 前面绘制