现在如何判断SurfaceView
是否为正方形,高度与ImageView
的宽度相同?
<RelativeLayout
android:id="@+id/rlQr"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:layout_below="@+id/rlTop">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/ivScanTop"
android:layout_centerHorizontal="true"
android:layout_alignParentTop="true"
android:background="@drawable/qr_margin_top" />
<SurfaceView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:layout_alignLeft="@+id/ivScanTop"
android:layout_alignRight="@+id/ivScanTop"/>
答案 0 :(得分:1)
根据this答案,您应该扩展SurfaceView
并在.xml文件中添加一个。{1}}。在这种情况下,UI设计师将显示一个正方形。
答案 1 :(得分:0)
您可以使用Java中的onCreate方法执行此操作。
您必须在SurfaceView XML声明中添加它:
android:id="@+id/surfaceViewId"
在onCreate方法中:
SurfaceView surface = (SurfaceView) findViewById(R.id.surfaceViewId);
ImageView image = (ImageView) findViewById(R.id.ivScanTop);
surface.getHolder().setFixedSize(image.getWidth(), image.getHeight());
答案 2 :(得分:0)
初始化您的视图,然后将其添加到您的Activity的onCreate方法中:
ivScanTop.post(new Runnable() {
@Override
public void run() {
surfaceView.getHolder().setFixedSize(ivScanTop.getwidth(), ivScanTop.getwidth()) ;
}
});