Android视图宽度与宽度相同,宽度是动态的

时间:2016-11-01 07:59:56

标签: android android-layout

现在如何判断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"/>

3 个答案:

答案 0 :(得分:1)

根据this答案,您应该扩展SurfaceView并在.xml文件中添加一个。{1}}。在这种情况下,UI设计师将显示一个正方形。

答案 1 :(得分:0)

您可以使用Java中的onCreate方法执行此操作。

  1. 您必须向SurfaceView
  2. 添加ID

    您必须在SurfaceView XML声明中添加它:

    android:id="@+id/surfaceViewId"
    
    1. 在你的活动java类中,在你的onCreate方法中,试试这个:
    2. 在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())  ;                       
    }
});