Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 收缩表面查看是否在盒子中_Java_Android_Surfaceview - Fatal编程技术网

Java 收缩表面查看是否在盒子中

Java 收缩表面查看是否在盒子中,java,android,surfaceview,Java,Android,Surfaceview,我想更改我的应用程序中当前的SurfaceView 到 有没有一种不使用main.xml的方法 我正在尝试在运行时编写GUI。通过覆盖onMeasure()并使用setMeasuredDimension(),我可以实现当前的SurfaceView(上图),但我想实现下图。绿色区域是屏幕的其余部分 编辑: 您是否尝试过使用android:layout\u gravity-属性在布局中居中显示视图 相应的类别为,列出了可能的重力。然后,代码可以如下所示: FrameLayout f = new

我想更改我的应用程序中当前的
SurfaceView

有没有一种不使用
main.xml
的方法

我正在尝试在运行时编写GUI。通过覆盖
onMeasure()
并使用
setMeasuredDimension()
,我可以实现当前的
SurfaceView
(上图),但我想实现下图。绿色区域是屏幕的其余部分

编辑:


您是否尝试过使用
android:layout\u gravity
-属性在布局中居中显示视图

相应的类别为,列出了可能的重力。然后,代码可以如下所示:

FrameLayout f = new FrameLayout(this);
ImageView test = new ImageView(this);
f.addView(test, new FrameLayout.LayoutParams(500, 300, Gravity.CENTER));

你在用什么布局,你已经有什么代码了?我在用FrameLayout。但是我不想修改main.xml,因为我想学习如何在运行时进行修改。我的代码基于高通AR SDK,无法发布所有代码。我用来实现这一点的最重要的方法是onMeasure(),否则SurfaceView将是全屏的
@Override protected void on measure(int-widthMeasureSpec,int-heightMeasureSpec){this.setMeasuredDimension(500300);}
由于某种原因,当我试图在应用程序中插入这些行时,我的应用程序不断崩溃。有太多的代码行我张贴在这个网站上。我确实尝试过使用重力,比如“@Override protected void on measure(int-widthmasurespec,int-heightMeasureSpec){this.setMeasuredDimension(500300);param.gravity=gravity.CENTER_-VERTICAL;}”,但它仍然有相同的效果。你也可以这样使用它吗?如果你说你用代码创建了整个布局,我想这将发生在
onCreate()
-方法中。然后,只需将
LayoutParams
添加到要在
FrameLayout
中显示的视图中即可。
FrameLayout f = new FrameLayout(this);
ImageView test = new ImageView(this);
f.addView(test, new FrameLayout.LayoutParams(500, 300, Gravity.CENTER));