2011-01-13 4 views
3

Ich verwende diese Oberflächenansicht in meiner Anwendung und möchte jetzt programmatisch eine Textansicht hinzufügen. Wie kann ich das machen.Hinzufügen von Textansicht zur Oberflächenansicht

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

Dank ......

Antwort

15

Eine Option ist, ein FrameLayout mit zwei untergeordneten Elementen zu haben, zuerst das SurfaceView und dann das, was Sie auf dem SurfaceView überlagern möchten. Im folgenden Beispiel ist die zweite Ansicht im FrameLayout ein horozontil LinearLayout mit einem Button und einem TextView. Das FrameLayout zeigt alle untergeordneten Objekte in Z-Reihenfolge an, wobei das erste untergeordnete Element und alle untergeordneten Objekte in der oberen linken Ecke positioniert sind. In diesem Fall hat das LinearLayout Gravity.CENTER_VERTICAL (Ich denke, Sie könnten das gleiche mit Padding auf dem LinearLayout tun.

Ich habe nie viel (gute) Dokumentation darüber gefunden, wie SurfaceViews (oder eine beliebige Bildschirmdarstellung) funktioniert. Es kann ein Problem mit flackernden oder erfrischen, aber ich sehe nicht viel Problem auf meinem Froyo Evo. (Dieser Test App zeichnet ‚wirbeln‘ Linien auf der Surface unter der Schaltfläche und Textview.

SurfaceView with views overlaying it

Wenn die Frage einfach lautet: Wie fügen Sie programmgesteuert ein TextView zu einem Layout hinzu, das von einem XML-überhöhten Layout erstellt wurde, rufen Sie dann einen Verweis auf die Layout-Instanz ab und rufen Sie addView() auf. zu ihm.

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

ist dies nicht möglich, kann ein Surface nicht andere Ansichten enthalten.