将视图添加到另一个视图

时间:2010-10-09 08:47:41

标签: java android

是否有可能将视图或衍生物(按钮,textview,imageview等...)添加到另一个视图而无需经过布局?

我有一个名为ScreenView的类,它派生自View(例如公共类ScreenView扩展View)。 我想在其中显示文字,标签,图像等。

在iPhone上它是微不足道的,只需创建我的对象并使用addSubview方法;您可以将任何UI对象嵌入到另一个UI对象中。大多数UI工具包都是这样工作的。

布局问题是我没有找到一种简单的方法来将子视图(比如文本视图)正确放置在封闭视图的给定位置。我想要一个包含另一个......

我希望我错过了文档中的内容(这绝对不是直观的)我可以做类似myView.addView(subview)的操作。但事实并非如此:)

作为一个侧面问题,Android世界中最接近iPhone的UILabel的是什么? UILabel可以包含文本或图形。现在我一直在使用TextView和ImageView但是当它作为UILabel布局时,它们并不是那么灵活

编辑:让我的View继承自ViewGoup,让我添加子视图.. 但是,我想在我看来画画。我发现当ScreenView扩展ViewGroup时,onDraw函数永远不会被调用。

类似的东西:

        @Override
        protected void onDraw(Canvas canvas) {
            super.onDraw(canvas);

            Paint paint = new Paint();
            paint.setStyle(Paint.Style.FILL);

            // make the entire canvas yellow
            paint.setColor(Color.YELLOW);
            canvas.drawPaint(paint);
}

如果ScreenView扩展View,我的视图会以黄色绘制;但不是如果它扩展了ViewGroup。

如何直接在视图中绘制?

由于 JY

2 个答案:

答案 0 :(得分:2)

使用ViewGroup,这就是它们的用途。然后你可以调用addView():)

答案 1 :(得分:0)

在让我的类继承自RelativeLayout之后,它确实绘制了我的子视图。 默认情况下,GroupView不会绘制任何内容,并且需要完全编写onLayout。没有关于此事的文件,这将是一件很难的事情。

默认情况下不会调用

onDraw,如果设置背景颜色或添加任何可绘制项目,它都会被调用。

否则你需要在dispatchDraw期间绘制。

相关问题