在自定义GLSurfaceView上添加视图

时间:2011-07-28 23:07:41

标签: android android-layout

(请注意,我是Android编程的初学者)

我有一个派生自GLSurfaceView的课程。

我想要的是在它上面放置一些视图(图像,文本)。 我设法通过textView.setPadding(300,0,0,0);

使文本视图正确定位

问题在于我无法使图像视图正确定位。我试过imageView.layout(), imageView.setPadding()

以下是代码:

 ImageView imageView=new .... // Create and set drawable

 // Setting size works as expected
 RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(200,200);
 imageView.setLayoutParams(lp);

 surfaceView = new MySurfaceViewDerivedFromOpenGLSurface(...);

 setContentView(surfaceView);

 addContentView(textView, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
 addContentView(textView2, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
 addContentView(imageView, lp); // Add the image view

是否可以在不指定XML文件中的内容的情况下以这种方式正确定位?

我在sdk dev网站上看到了一个示例,展示了如何在openGL表面视图上创建视图,但问题是我有一个派生类,我不知道是否可以在XML文件中指定它(我有0%的XML经验,到目前为止Eclipse已经为我处理了所有事情。)

1 个答案:

答案 0 :(得分:2)

稍后通过学习如何使用xml布局,您将节省大量的麻烦。为自定义视图指定布局也使我失望。这是它的工作原理:

<view class="complete.package.name.goes.here.ClassName"
    android:id="@+id/workspace"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >        
</view>

因此,您应用的简单垂直布局应为:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <TextView android:id="@+id/textView1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>
    <TextView android:id="@+id/textView2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>
    <ImageView android:id="@+id/imageView1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>

    <view class="package.name.to.MySurfaceViewDerivedFromOpenGLSurface"
        android:id="@+id/mySurfaceView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1">        
    </view>     
</LinearLayout>

只要有id:

,您就可以获得布局文件中任何内容的引用
ImageView myImageView = (ImageView ) findViewById(R.id.imageView1);