我有一个简单的线性布局,并希望将屏幕分成两个大小相等的部分。
在上面一个中,我想放一个与其父级完全相同的SurfaceView
,即屏幕的一半。不幸的是,它总是占用所有屏幕或没有(取决于配置)。
为什么这样,我该如何改变呢?
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:weightSum="2"
android:orientation="vertical">
<LinearLayout android:id="@+id/layoutUpperDaw"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="#192832">
<com.example.MySurvfaceView
android:id="@+id/id_mySurfaceView"
android:layout_width="match_parent"
android:layout_height="0pt"
android:layout_weight="1"
OR
android:layout_height="match_parent"
>
</com.example.MySurvfaceView>
</LinearLayout>
<LinearLayout android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="#193222">
...
</LinearLayout>
</LinearLayout>
答案 0 :(得分:1)
当您提供weight
时,您必须将身高或体重设置为0dp,如下所示。
<LinearLayout android:id="@+id/layoutUpperDaw"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#192832">
和
<com.example.MySurvfaceView
android:id="@+id/id_mySurfaceView"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
>
更新:上面的答案对于体重使用是正确的,请确保在您使用体重的所有地方,高度或宽度均为0dp。
你真的不需要嵌套的LinearLayout。以下应该有效。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.example.MySurvfaceView
android:id="@+id/id_mySurfaceView"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
>
</com.example.MySurvfaceView>
<LinearLayout android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#193222">
</LinearLayout>
</LinearLayout>
答案 1 :(得分:0)
编程:
找到父布局。
GridLayout gridLayout =(GridLayout)findViewById(R.id.gridLayout);`
获取测量高度和父级宽度。
int height = gridLayout.measuredHeight();
int width = gridLayout.measuredWidth();
3.计算子视图的高度和宽度。例如,两个孩子在父母身上占据50%的身高但是占据父母的全宽:
int childHeight = height/2;
int childWidth = width;
4.获取LayoutParams的实例,具体取决于父类型。
GridLayout.LayoutParams params = new GridLayout.LayoutParams();
5。在布局参数上设置高度和宽度。
params.width = childWidth;
params.height = childHeight;
6.创建子视图并设置布局参数。
ImageView imageview = new ImageView();
imageview.setLayoutParams(params);
7.将子视图添加到父级。
gridLayout.addView(ImageView);