2011-11-15 5 views
2

glsurfaceviewの高さをカスタム高さに設定したいと思います。 幅が高さと同じであることを希望します。 android:layout_width = "fill_parent" width = height = width_of_the_screenにする方法は?Android setHeight of glsurfaceview

どうもありがとう

答えて

1

あなたはview.getLayoutParams().height = view.getMeasuredWidth();問題を使用してプログラム的に高さを設定することができそうmeasuredWidthがちょうどゼロが返されます、これはビューが初めて描かれた後に行う必要があります。 (あなたがOpenGLを使用していると仮定して)、あなたのRendererクラスのonDrawが呼び出されるまでに、それは間違いなく画面に描画されていることは間違いありません。しかし、GLスレッド(それはonDrawを呼び出します)とビューの幅/高さなどを変更できる唯一のものである(メイン)UIスレッドとの間でメッセージをやりとりする必要があります。

3

onMeasure受信した幅にsetMeasuredDimensionの両方のパラメータを設定するには、以下見た:

class TouchSurfaceView extends GLSurfaceView { 

@Override 
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
      int width = View.MeasureSpec.getSize(widthMeasureSpec); 
    this.setMeasuredDimension(width, width); 
} 
... 

レイアウトで次のように

... 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" android:layout_width="fill_parent" 
    android:layout_height="wrap_content" android:layout_gravity="top" 
    > 
    <se.company.test.TouchSurfaceView android:id="@+id/glSurface" 
     android:layout_width="wrap_content" android:layout_height="wrap_content" /> 
</LinearLayout> 
... 
関連する問題