我在我的应用程序中使用这个表面视图,现在我想以编程方式添加文本视图。我怎么能这样做。
"<com.csfcse.udrawer.UdrawerDrawingSurface
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/drawingSurface"
android:layout_gravity="left" />"
感谢......
答案 0 :(得分:16)
一个选项可能是让FrameLayout有两个子节点,首先是SurfaceView,然后是你想要在SurfaceView上叠加的任何内容。在下面的示例中,FrameLayout中的第二个视图是带有Button和TextView的horozontil LinearLayout。 FrameLayout将所有子项显示为按Z顺序堆叠,第一个子项位于底部,所有子项位于左上角。在这种情况下,LinearLayout具有Gravity.CENTER_VERTICAL(我认为你可以在LinearLayout上使用填充做同样的事情。
我从来没有找到很多关于SurfaceViews(或任何屏幕绘图)工作原理的文档。闪烁或刷新可能有问题,但我在Froyo Evo上看不到太多问题。 (此测试应用程序在Button和TextView下面的SurfaceView上绘制'旋转'线。
如果问题很简单:如何以编程方式将TextView添加到由XML膨胀的布局创建的布局中,然后获取对布局实例的引用并向其调用addView()。
Layout lay = parentLayo.findViewById(R.id.drawingSurfaceParent);
TextView tv = new TextView(this);
tv.setText("New textview");
lay.addView(tv);
答案 1 :(得分:7)
您需要使用Canvas和相应的文本绘制方法:
drawText(String text, int index, int count, float x, float y, Paint paint)
答案 2 :(得分:3)
这是不可能的,SurfaceView不能包含其他视图。