是否有可能将视图或衍生物(按钮,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
答案 0 :(得分:2)
使用ViewGroup,这就是它们的用途。然后你可以调用addView():)
答案 1 :(得分:0)
在让我的类继承自RelativeLayout之后,它确实绘制了我的子视图。 默认情况下,GroupView不会绘制任何内容,并且需要完全编写onLayout。没有关于此事的文件,这将是一件很难的事情。
默认情况下不会调用onDraw,如果设置背景颜色或添加任何可绘制项目,它都会被调用。
否则你需要在dispatchDraw期间绘制。