Android addView命令不工作
我正在将Android addView命令不工作,android,android-layout,android-view,Android,Android Layout,Android View,我正在将cameraView、glSurfaceView和ImageView按该顺序添加到relativeLayout,但结果将它们从上到下排列(cameraView、ImageView、glSurfaceView)有什么具体原因吗?是因为glSurfaceView在内部重新绘制了它的自身吗 代码snippit用于添加: 相对添加视图(glView) 问题是。。如何确保imageView始终位于顶部 我认为GLSurfaceView的onDrawFrame方法将GLSurfaceView带到了视
cameraView
、glSurfaceView
和ImageView
按该顺序添加到relativeLayout
,但结果将它们从上到下排列(cameraView
、ImageView
、glSurfaceView
)有什么具体原因吗?是因为glSurfaceView
在内部重新绘制了它的自身吗
代码snippit用于添加:
相对添加视图(glView)
问题是。。如何确保imageView始终位于顶部
我认为GLSurfaceView的
onDrawFrame
方法将GLSurfaceView
带到了视图列表的顶部,因此我从onDrawFrame方法添加了对main活动上公共方法的回调,如下所示:
public void ajustOverlay(){
imageView.bringToFront();
Log.v("parent: ", "ajust overlay");
}
这似乎仍然无法将
图像视图保持在顶部您添加的视图没有足够的规则进行相对性调整,这可能就是结果不是您期望的结果的原因。
例如,必须定义RelativeLayout.BELOW
规则,以确保一个视图位于另一个视图的下方
首先,您应该尝试用XML构建布局,以便能够在Eclipse上查看结果。
然后通过编程方式应用文件中的所有规则,或者借助LayoutInflater
轻松构建XML层次结构。
我真的建议你的解决方案,如果你可以,出于许多原因(维护,重新格式化,多屏幕处理,…)
您还应该阅读关于RelativeLayout的完整文档以正确设置格式:您添加的视图没有足够的规则用于RelativeLayout,这可能就是结果不是您期望的结果的原因。
例如,必须定义RelativeLayout.BELOW
规则,以确保一个视图位于另一个视图的下方
首先,您应该尝试用XML构建布局,以便能够在Eclipse上查看结果。
然后通过编程方式应用文件中的所有规则,或者借助LayoutInflater
轻松构建XML层次结构。
我真的建议你的解决方案,如果你可以,出于许多原因(维护,重新格式化,多屏幕处理,…)
您还应该阅读有关RelativeLayout的完整文档以正确设置其格式:我在尝试将三个常规线性布局
对象并排放置在父RelativeLayout
中时遇到了相同的排序问题。要纠正此问题,只需在调用addView
方法时再添加一个参数即可。它是三个参数中的第二个参数,表示要添加视图的顺序的索引
所以这应该对你有用:
rel.addView(camPreview, 0, camParams);
rel.addView(glView, 1, glParams);
rel.addView(imageView,2, imageParams);
我在尝试将三个常规LinearLayout
对象并排放置在父RelativeLayout
中时遇到了相同的排序问题。要纠正此问题,只需在调用addView
方法时再添加一个参数即可。它是三个参数中的第二个参数,表示要添加视图的顺序的索引
所以这应该对你有用:
rel.addView(camPreview, 0, camParams);
rel.addView(glView, 1, glParams);
rel.addView(imageView,2, imageParams);
好吧,在尝试了上述解决方案和其他各种解决方案之后,我的头撞在混凝土上已经快一年了,我真的让它工作了。。关键是在添加glView之前添加以下行
glView.setZOrderMediaOverlay(true);
rel.addView(camPreview, camParams);
rel.addView(glView, glParams);
rel.addView(imageView, imageParams);
好吧,在尝试了上述解决方案和其他各种解决方案之后,我的头撞在混凝土上已经快一年了,我真的让它工作了。。关键是在添加glView之前添加以下行
glView.setZOrderMediaOverlay(true);
rel.addView(camPreview, camParams);
rel.addView(glView, glParams);
rel.addView(imageView, imageParams);
也许您可以使用视图层次工具?也许您可以使用视图层次工具?RelativeLayout.bellow将一个视图从下到上对齐,对吗?这不是我想做的,我想把一个视图覆盖在另一个视图上,这样相对视图就适合你的情况了。您是否使用或能否使用LayoutInflater
实例化视图?我没有使用LayoutInflater,因为没有现有的xml布局。我这样做了:RelativeLayout rel=new RelativeLayout(this);//设置为主视图setContentView(rel);我认为问题在于GLSURFACHEVIEW有一个OnDraw方法,并且总是以某种方式将它带到最前面。。有没有办法确保它保持在imageviewRelativeLayout的下方。下方对齐一个视图,从底部到另一个视图的顶部正确吗?这不是我想做的,我想把一个视图覆盖在另一个视图上,这样相对视图就适合你的情况了。您是否使用或能否使用LayoutInflater
实例化视图?我没有使用LayoutInflater,因为没有现有的xml布局。我这样做了:RelativeLayout rel=new RelativeLayout(this);//设置为主视图setContentView(rel);我认为问题在于GLSURFACHEVIEW有一个OnDraw方法,并且总是以某种方式将它带到最前面。。有没有办法确保它位于imageview下方