I have a SurfaceView in ConstraintLayout.
I changed SurfaceView width and height, but only height is changed.
How to change SurfaceView width?
this is my activity.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>
this is 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);
}
I solve myself. Change a SurfaceView's attribute
android:layout_width = "0dp"
to
android:layout_width = "wrap_content"
than it works.