美好的一天。我正在构建一个Android应用程序。我正在使用OpenCV3的NativeCameraView
LayoutElement,我想在它上面放置一个启动图像。
原始布局如下所示:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:opencv="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/baseRelativeLayout">
<org.opencv.android.NativeCameraView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:alpha="0.7"
android:id="@+id/color_blob_detection_activity_surface_view" />
</RelativeLayout>
它向我展示了使用Open CV的NativeCameraView的相机输入。然后,我可以按照我喜欢的方式进行图像处理。
但是,我想在它上方添加一个启动图像叠加层。我做的是添加一个imageView,如下:
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/imageViewSplashScreen"
android:alpha="0.7"
android:visibility="visible"
android:src="@drawable/screen_1"
android:contentDescription="splashScreen"/>
但是,即使“设计”选项卡显示我的启动画面imageView位于OpenCV的cameraView上方,我的应用程序根本不显示启动图像。
然后我尝试将openCV Camera Object和ImageView放在不同的相对视图上:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:opencv="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/baseRelativeLayout">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/imageViewSplashScreen"
android:alpha="0.7"
android:visibility="visible"
android:src="@drawable/screen_1"
android:contentDescription="splashScreen"/>
</RelativeLayout>
<!--<org.opencv.android.JavaCameraView-->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<org.opencv.android.NativeCameraView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:alpha="0.7"
android:id="@+id/color_blob_detection_activity_surface_view" />
</RelativeLayout>
</RelativeLayout>
然而,即使我换了他们的位置,这也行不通。
最后,我还使用了FrameLayout:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:opencv="http://schemas.android.com/apk/res-auto"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/baseRelativeLayout">
<org.opencv.android.NativeCameraView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/color_blob_detection_activity_surface_view"/>
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/imageViewBitmapResult"
android:visibility="gone"
android:contentDescription="resultScreen"/>
</FrameLayout>
但无济于事
任何人都可以帮我解决布局问题吗?我觉得我在这里忽略了一些简单的东西。谢谢你的帮助。
答案 0 :(得分:0)
只需使用layout_above或layout_below即可。
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id\relativeLayout1">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/imageViewSplashScreen"
android:alpha="0.7"
android:visibility="visible"
android:src="@drawable/screen_1"
android:contentDescription="splashScreen"/>
</RelativeLayout>
<!--<org.opencv.android.JavaCameraView-->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id\relativeLayout1">
<org.opencv.android.NativeCameraView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:alpha="0.7"
android:id="@+id/color_blob_detection_activity_surface_view" />
</RelativeLayout>
答案 1 :(得分:0)
LinearLayout用于逐个线性堆叠的视图。
FrameLayout用于堆叠在彼此之上的视图。
相对布局适用于更复杂的视图。具有视图之间的相对属性。