原理:通过控件的setLayoutParams(params)来设置。而params的类型主要是根据该控件的父控件的类型来定义的。
例如,1、main.xml文件内容如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal"
android:orientation="vertical">
<RelativeLayout
android:id="@+id/rlayout_video"
android:layout_width="match_parent"
android:layout_height="200dp"
>
<SurfaceView
android:id="@+id/sv"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</RelativeLayout>
</LinearLayout>
2、在MainActivity.java的onCreate( )方法中,获取当前手机屏幕的宽和高。代码如下:
private RelativeLayout rLayout_video;
private int screenWidth;
private int screenHeight;
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
screenWidth= dm.widthPixels;
screenHeight= dm.heightPixels;
然后,获取目标控件rLayout_video,从main.xml中可知它的父组件是LinearLayout类型的,所以,LayoutParams的类型为LinearLayout的。如下代码所示:
rLayout_video=(RelativeLayout) findViewById(R.id.rlayout_video);
LinearLayout.LayoutParams params_1= (LinearLayout.LayoutParams) rLayout_video.getLayoutParams();
params_1.height=screenHeight/3;
rLayout_video.setLayoutParams(params_1);