2010-10-09 112 views
2

是否有可能将视图或派生(按钮,textview,imageview等等)添加到另一个视图而无需通过布局?我有一个名为ScreenView的类,它从View派生(例如,公共类ScreenView的扩展视图)。 我想显示文本,标签,图像等。将视图添加到另一个视图

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

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

我希望我错过了文档中的东西(这远非直观的肯定),我可以做一些像myView.addView(子视图)。但事实并非如此:)

作为一个侧面的问题,在Android世界中最接近iPhone的UILabel是什么? UILabel可以包含文本或图形。现在,我已经使用的TextView和ImageView的过,但他们没有任何地方灵活,当涉及到布局一个UILabel

编辑:让从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); 
} 

将以黄色我看来,如果油漆延伸屏幕视图查看;但如果它扩展ViewGroup则不会。

如何直接在视图中绘制呢?

感谢 JY

+0

看起来像ViewGroup类会做的伎俩.. – jyavenard 2010-10-09 08:49:22

回答

0

使我的类继承而来的是RelativeLayout,它确实绘制了我的子视图。 GroupView默认不绘制任何东西,并且onLayout需要被完全写入。没有关于这个问题的文件,这将是一件很难的事情。

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

否则,您需要在dispatchDraw中进行绘制。

2

使用ViewGroup中,这就是他们是什么。然后你可以调用addView():)

+0

是的,我看到后不久,我发布.. – jyavenard 2010-10-10 01:07:36

+0

但是,我发现onDraw不与它调用。当我的类继承View类 – jyavenard 2010-10-10 01:08:10

+1

ViewGroups默认不绘制时,肯定会调用它,你必须在某处调用setWillNotDraw(false)。你也可以使用dispatchDraw()。 – 2010-10-10 16:27:43

相关问题