2012-07-13 8 views
0

SurfaceView에 텍스트를 그려야하지만 아무것도 표시되지 않습니다.SurfaceView에 텍스트를 그립니다.

View의 너비와 높이를 가져 오려고하면 부모 요소를 채워야하지만 0이 반환됩니다.

camerapreview.xml

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent"> 
    <SurfaceView 
      android:id="@+id/svCamera" 
      android:layout_height="fill_parent" 
      android:layout_width="fill_parent"/> 

    <FrameLayout 
      android:layout_height="fill_parent" 
      android:layout_width="fill_parent"> 
     <View 
       android:id="@+id/vOverlays" 
       android:layout_height="fill_parent" 
       android:layout_width="fill_parent"/> 
    </FrameLayout> 
</FrameLayout> 

CameraActivity.java

public class CameraActivity extends Activity { 
    private Camera camera; 
    private CameraPreview cameraPreview; 
    private View vOverlays; 
    private SurfaceHolder svHolder; 
    private SurfaceView svCamera; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.camerapreview); 

     svCamera = (SurfaceView) findViewById(R.id.svCamera); 
     vOverlays = findViewById(R.id.vOverlays); 
    } 

    @Override 
    protected void onResume() { 
     super.onResume(); 

     camera = Camera.open(); 

     svHolder = svCamera.getHolder(); 
     cameraPreview = new CameraPreview(svHolder, camera); 
     svHolder.addCallback(cameraPreview); 
     svHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 

     Canvas canvas = new Canvas(); 
     Paint paint = new Paint(); 
     paint.setColor(Color.BLACK); 
     paint.setTextSize(10); 

     canvas.drawText("Testext", vOverlays.getWidth()/2, vOverlays.getHeight()/2, paint); 
     vOverlays.draw(canvas); 
    } 
} 

답변

-2
즉 동적 텍스트 뷰를 만들고에 추가 당신은 부모보기 그것 자체에 텍스트 뷰를 추가 할 수 있습니다

귀하의 부모 레이아웃. 여기서 프레임 레이아웃의 참조를 얻으려면 텍스트보기를 추가 할 수 있어야합니다. ...

frame_layout.addView(text_view); 
text_view.bringToFront(); 
+0

텍스트를 표면 뷰에 그리는 것과는 아무런 관계가 없습니다. – RichieHH

관련 문제