オプションとして、2つの子を持つFrameLayoutを作成することもできます。最初は、SurfaceViewで、次に、SurfaceViewにオーバーレイするものを指定します。以下のサンプルでは、FrameLayoutの2番目のビューは、ボタンとTextViewを備えたhorozontilLinearLayoutです。FrameLayoutは、すべての子をZオーダーで積み上げて表示し、最初の子を下に、すべての子を左上隅に配置します。この場合、LinearLayoutにはGravity.CENTER_VERTICALがあります(LinearLayoutのパディングでも同じことができると思います。
SurfaceViews(または任意の画面描画)がどのように機能するかについて、多くの(優れた)ドキュメントを見つけたことがありません。ちらつきやリフレッシュに問題があるかもしれませんが、フローズンヨーグルトにはあまり問題はありません。(このテストアプリは、SurfaceViewのButtonとTextViewの下に「回転する」線を描画します。

質問が単純な場合:XMLで膨らませたレイアウトによって作成されたレイアウトにTextViewをプログラムで追加するにはどうすればよいですか。次に、Layoutインスタンスへの参照を取得し、それにaddView()を呼び出します。
Layout lay = parentLayo.findViewById(R.id.drawingSurfaceParent);
TextView tv = new TextView(this);
tv.setText("New textview");
lay.addView(tv);