我在主的anctivity加了几个button,在外部创建了一个 SurfaceView类,现在的问题是我怎么把这个SurfaceView加到正在运行的Activity中啊。
上代码,Activity是这样的
public class control extends Activity
{
OutputStream tmpIn = null;
Button bt1,bt2,bt3,bt7;
TextView tv;
public Bitmap bit;
public void onCreate(Bundle savedInstanceState)
{
//BS = new BlueServer();
super.onCreate(savedInstanceState);
setContentView(R.layout.main2);
//requestWindowFeature(Window.FEATURE_NO_TITLE);
DrawingBoardSurfaceView sfv = new DrawingBoardSurfaceView(this);
bt1 = (Button)findViewById(R.id.button1);
bt2 = (Button)findViewById(R.id.button2);
bt3 = (Button)findViewById(R.id.button3);
bt7 = (Button)findViewById(R.id.button7);
bt1.setOnClickListener(new ClickEvent());
bt2.setOnClickListener(new ClickEvent());
bt3.setOnClickListener(new ClickEvent());
bt7.setOnClickListener(new ClickEvent());
tv = (TextView)findViewById(R.id.textview1);
我在其中实例化了自己定义的外部SurfaceView 但他显示的 还是原有的main2中所创建的SurfaceView
外部类所定义的SurfaceView是这样的public class DrawingBoardSurfaceView extends SurfaceView implements Callback,
Runnable
{
SurfaceView sfv;
SurfaceHolder holder;
public DrawingBoardSurfaceView(Context context) {
super(context);
sfv = (SurfaceView)findViewById(R.id.SufaceView1);
这里面的(R.id.SufaceView1)就是main2中所定义的SufaceView1,
main2中的代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent" 
  android:weightSum="1"
   android:orientation="vertical"><LinearLayout android:id="@+id/LinearLayout01"
android:layout_width="wrap_content" 
android:layout_height="wrap_content">
    <Button 
    android:text="播放" 
    android:id="@+id/button1" 
    android:layout_width="wrap_content"
     android:layout_height="wrap_content">
     </Button>
     
    <Button 
    android:text="上一页" 
    android:id="@+id/button3"
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content">
     </Button>
    <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/button2" android:text="下一页"></Button>
    <Button
     android:text="结束" 
     android:id="@+id/button7" 
     android:layout_width="wrap_content"
      android:layout_height="wrap_content"></Button>
      <TextView
     android:text="haha"
     android:id = "@+id/textview1"
     android:layout_width="wrap_content"
      android:layout_height="wrap_content"
     ></TextView>     </LinearLayout>
     <LinearLayout android:id="@+id/LinearLayout02"
android:layout_width="wrap_content" 
android:layout_height="wrap_content">
<Button 
android:text="划线" 
android:id="@+id/button5" 
android:layout_width="wrap_content"
 android:layout_height="wrap_content">
 </Button>
<Button 
android:text="取消划线" 
android:id="@+id/button4" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content">
</Button>
</LinearLayout>
      <SurfaceView 
      android:id="@+id/SufaceView1"       
      android:layout_width="match_parent" 
      android:layout_height="match_parent">
      </SurfaceView >
    </LinearLayout>
如何把外部定义的这个SurfaceView加到主的activity中呢,这样可以实现我在外部直接监听这个SurfaceView。请大家给个方法或思路。

解决方案 »

  1.   

    它本身已经set了一个view就是main2,我只是想把sfv加到下半部分。有没有什么类似于add的方法
      

  2.   

    我没试过,应该是通过ViewGroup来组织的,我看了一下android API ,有一个addView方法,可以实现,或者重写OnLayout()方法,调用addViewInLayout()来实现
      

  3.   

    </LinearLayout id = "+@id/ll_layout">
          <SurfaceView 
          android:id="@+id/SufaceView1"       
          android:layout_width="match_parent" 
          android:layout_height="match_parent">
          </SurfaceView >
    </LinearLayout>既然这样定义可以。
    那么我可以得到LinearLayout:
    LinearLayout layout = findViewById(R.id.ll_layout);
    然后再加入你自己定义的surfaceview就可以了
    layout.addView(sfv, ViewGroup.LayoutParams params) //params是定义sfv的位置用的