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));