4

我在我的应用程序中使用它作为表面视图,现在我想以编程方式向它添加文本视图。我怎样才能做到这一点。

"<com.csfcse.udrawer.UdrawerDrawingSurface
  android:layout_width="fill_parent" 
  android:layout_height="fill_parent"
  android:id="@+id/drawingSurface" 
        android:layout_gravity="left" />"

谢谢......

4

3 回答 3

17

一个选项可能是有一个带有两个孩子的 FrameLayout,首先是 SurfaceView,然后是您想要覆盖在 SurfaceView 上的任何内容。在下面的示例中,FrameLayout 中的第二个 View 是带有 Button 和 TextView 的 horozontil LinearLayout。FrameLayout 将其所有子项按 Z 顺序显示,第一个子项位于底部,所有子项位于左上角。在这种情况下,LinearLayout 具有 Gravity.CENTER_VERTICAL (我认为您可以对 LinearLayout 上的填充做同样的事情。

我从来没有找到关于 SurfaceViews(或任何屏幕绘图)如何工作的很多(好的)文档。闪烁或刷新可能存在问题,但我在 Froyo Evo 上没有发现太多问题。(此测试应用程序在 Button 和 TextView 下方的 SurfaceView 上绘制“旋转”线。

SurfaceView 与覆盖它的视图

如果问题很简单:如何以编程方式将 TextView 添加到由 XML 膨胀布局创建的布局中,然后,获取对 Layout 实例的引用并调用 addView() 。

Layout lay = parentLayo.findViewById(R.id.drawingSurfaceParent);
TextView tv = new TextView(this);
tv.setText("New textview");
lay.addView(tv);
于 2011-02-10T01:54:49.570 回答
7

您需要使用 Canvas 和相应的文本绘制方法:

drawText(String text, int index, int count, float x, float y, Paint paint)

于 2011-01-20T16:52:06.547 回答
3

这是不可能的,一个 SurfaceView 不能包含其他 View。

于 2011-01-20T16:45:01.767 回答