我正在尝试将一个布局放置在另一个布局之上。我可以做到,但案件有问题。我先描述一下: 这是我的布局代码:
<RelativeLayout>
<LinearLayout
android:id="@+id/smallVideoRenderLayoutOutgoing"
android:layout_width="120dp"
android:layout_height="170dp"
android:orientation="vertical"/>
<LinearLayout
android:id="@+id/largeVideoRenderLayoutOutgoing"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"/>
</RelativeLayout>
还有其他的东西,但这里不是必需的。如果我用这两个视图运行代码就可以正常工作。但是,如果我在 Activity 的 onCreate() 或 onResume() 方法中为“smallVideoRenderLayoutOutgoing”设置 Visibility(GONE) 。它根本不显示。虽然我可以在我的程序上看到“smallVideoRenderLayoutOutgoing”的可见性,并且它显示它是可见的,但我在屏幕上看不到它。我认为它与“largeVideoRenderLayoutOutgoing”重叠。您怎么看?我该如何解决这个问题?
private LinearLayout smallVideoRenderLayoutOutgoing, largeVideoRenderLayoutOutgoing;
private VideoCallImageRenderView smallPlayerGLView, largePlayerGLView;
private void initVideoRenderer() {
Constants.debugLog(TEST_TAG, "initVideoRenderer");
Constants.debugLog(TAG, "initVideoRenderer");
smallPlayerGLView = new VideoCallImageRenderView(this);
largePlayerGLView = new VideoCallImageRenderView(this);
VideoCallCamera.getInstance().startCamera();
VideoCallCamera.getInstance().cameraCallBack(largePlayerGLView, this);
isOwnSurfaceViewLarge = true;
largeVideoRenderLayoutOutgoing.addView(largePlayerGLView);
largeVideoRenderLayoutOutgoing.setOnClickListener(this);
smallVideoRenderLayoutOutgoing.addView(smallPlayerGLView);
smallVideoRenderLayoutOutgoing.setOnClickListener(this);
smallVideoRenderLayoutOutgoing.setVisibility(View.GONE);
}
尝试代替:
<RelativeLayout>
<LinearLayout
android:id="@+id/smallVideoRenderLayoutOutgoing"
android:layout_width="120dp"
android:layout_height="170dp"
android:orientation="vertical"/>
<LinearLayout
android:id="@+id/largeVideoRenderLayoutOutgoing"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"/>
</RelativeLayout>
使用垂直方向的
LinearLayout
作为根布局。对于您的大布局,高度为 0dp,重量为 1 - 这将使您的大布局占据所有可用空间 - 并且它将位于小布局下。
类似于以下内容:
<LinearLayout
android:orientation="vertical">
<LinearLayout
android:id="@+id/smallVideoRenderLayoutOutgoing"
android:layout_width="120dp"
android:layout_height="170dp"
android:orientation="vertical"/>
<LinearLayout
android:id="@+id/largeVideoRenderLayoutOutgoing"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="vertical"/>
</RelativeLayout>
尝试将布局宽度和高度从匹配父项更改为换行内容。 或者,当您使视图不可见时,请调用另一个视图的 BringToFront() 方法。 您应该检查这个。
LinearLayout 可以,但是设置权重很重要...
对于一个 Linear,它使用两种布局,
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ff314859"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android">
<ImageView
android:id="@+id/logo"
android:layout_width="fill_parent"
android:layout_height="0px"
android:layout_weight="10"
/>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0px"
android:orientation="vertical"
android:layout_weight="20">
<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:textSize="8dp"
android:text="Bye World!"
android:textColor="#ffffffff"
android:layout_weight="1"
android:gravity="center"
/>
</LinearLayout>
</LinearLayout>
对于两个 Linears,它使用三种布局,
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ff314859"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android">
<ImageView
android:id="@+id/logo"
android:layout_width="fill_parent"
android:layout_height="0px"
android:layout_weight="10"
/>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0px"
android:orientation="vertical"
android:layout_weight="20">
<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:textSize="8dp"
android:text="Hello World!"
android:textColor="#ffffffff"
android:layout_weight="10"
android:gravity="center"
/>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0px"
android:orientation="vertical"
android:layout_weight="22">
<Button
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:textSize="8dp"
android:text="Exit"
android:layout_weight="12"
android:id="@+id/but_exit"
android:background="#ffEFC802"
android:textColor="#ffffffff"
android:layout_weight="1"
android:gravity="center"
/>
</LinearLayout>
</LinearLayout>