将文本视图添加到表面视图

4

我在我的应用程序中使用了SurfaceView,现在我想以编程方式向其添加TextView。我该如何做呢?

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

Thanks......

3个回答

17
一个选择是使用FrameLayout并拥有两个子元素,首先是SurfaceView,其次是您想要覆盖在SurfaceView上的任何内容。在下面的示例中,FrameLayout中的第二个View是一个带有按钮和TextView的水平LinearLayout。FrameLayout按照Z顺序堆叠显示其所有子项,第一个子项位于底部,并将所有子项定位在左上角。在这种情况下,LinearLayout具有Gravity.CENTER_VERTICAL(我认为您可以通过LinearLayout上的padding来实现相同的效果)。
我从来没有找到过关于SurfaceView(或任何屏幕绘制)如何工作的很好的文档。可能存在闪烁或刷新问题,但我在我的Froyo Evo上看不到太大问题。(此测试应用程序在按钮和TextView下方的SurfaceView上绘制旋转的线条。)

SurfaceView with views overlaying it

如果问题仅仅是:如何通过编程将TextView添加到由XML充气的布局中,那么,获取布局实例的引用并调用addView()方法即可。

Layout lay = parentLayo.findViewById(R.id.drawingSurfaceParent);
TextView tv = new TextView(this);
tv.setText("New textview");
lay.addView(tv);

7

使用这种方法,能否使文本可编辑? - Prashanth Chandra

3
这是不可能的,SurfaceView不能包含其他视图。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接