如何更改表面视图的宽度和高度



我在ConstraintLayout中有一个SurfaceView。
我更改了 SurfaceView 的宽度和高度,但只更改了高度。

如何更改表面视图宽度?

这是我的活动.xml。

    <android.support.constraint.ConstraintLayout
      xmlns:android = "http://schemas.android.com/apk/res/android"
      xmlns:tools = "http://schemas.android.com/tools"
      android:layout_width = "match_parent"
      android:layout_height = "match_parent"
      xmlns:app = "http://schemas.android.com/apk/res-auto"
      tools:context = ".MainActivity"
    >
    <SurfaceView
        android:id="@+id/surface_play"
        android:layout_width = "0dp"
        android:layout_height = "200dp"
        app:layout_constraintTop_toTopOf ="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"        />
    <Button
        android:id="@+id/btn_play"
        android:layout_width = "wrap_content"
        android:layout_height = "wrap_content"
        android:text="play"
        app:layout_constraintTop_toBottomOf="@+id/surface_play"
        app:layout_constraintStart_toStartOf="parent"        />
    <Button
        android:id="@+id/btn_stop"
        android:layout_width = "wrap_content"
        android:layout_height = "wrap_content"
        app:layout_constraintTop_toTopOf="@+id/btn_play"
        app:layout_constraintStart_toEndOf="@+id/btn_play"        
        android:text="stop"        />    
</android.support.constraint.ConstraintLayout>

这是 surfaceChangedMethod。

     @Override
    public void surfaceChanged ( SurfaceHolder holder , int format , int width , 
    int height ) {
    android.view.ViewGroup.LayoutParams lp = surfaceView.getLayoutParams();
    lp.width = 1000; // required width
    lp.height = 1000; // required height
    surfaceView.setLayoutParams(lp);
}

我解决自己。更改表面视图的属性

android:layout_width = "0dp"

android:layout_width = "wrap_content" 

比它有效。

最新更新