如何以编程方式设置图像后停止ImageView下面的重叠元素?

时间:2018-02-23 18:37:50

标签: android imageview android-constraintlayout

我在XML布局中定义了以下元素

<ScrollView
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:fillViewport="true">

   <android.support.constraint.ConstraintLayout
      android:id="@+id/inputLayout"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:focusableInTouchMode="true"
      android:visibility="visible">

        <!--some more elements up here that I left out -->

        <TextView
            android:id="@+id/assetImageTextView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="8dp"
            android:layout_marginTop="16dp"
            android:text="@string/asset_photo_header"
            android:textAppearance="@android:style/TextAppearance.Material.Medium"
            android:textColor="@color/colorAccent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/uploadRemarksEditText" />
        <ImageView
            android:id="@+id/assetImageView"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginEnd="8dp"
            android:layout_marginStart="8dp"
            android:layout_marginTop="16dp"
            android:adjustViewBounds="true"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/textView10"
            />

        <TextView
            android:id="@+id/barcodeImageTextView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="8dp"
            android:layout_marginTop="16dp"
            android:text="@string/asset_barcode_photo_header"
            android:textAppearance="@android:style/TextAppearance.Material.Medium"
            android:textColor="@color/colorAccent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/assetImageView" />
        <ImageView
            android:id="@+id/assetBarcodeImageView"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginEnd="8dp"
            android:layout_marginStart="8dp"
            android:layout_marginTop="16dp"
            android:layout_marginBottom="16dp"
            android:adjustViewBounds="true"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/barcodeImageTextView" />
    </android.support.constraint.ConstraintLayout>
</ScrollView>

理想的结构是:

资产照片标题

资产照片ImageView

条码照片标题

条码照片ImageView

现在,当布局首次膨胀时,一切看起来都还可以。当设置资产ImageView的图像时,它显然会扩展ImageView高度 - 但是,这样做似乎重叠(并隐藏)应该在其下面的其余元素。

我在下面提供了截图供演示:

Before

After

我尝试过的事情:

  1. 致电imageView.getParent().requestLayout();
  2. 致电imageView.requestLayout();
  3. 致电barcodeImageTextView.requestLayout();
  4. 非常感谢您的任何想法。

    事实证明,它可能是ConstraintLayout的一个错误,我偶然发现了一个不同的问题的答案,建议使用测试版。

    implementation 'com.android.support.constraint:constraint-layout:1.1.0-beta5'

    问题现已解决!

1 个答案:

答案 0 :(得分:0)

事实证明它可能是 ConstraintLayout 的错误,我偶然发现this answer提出了一个建议使用测试版的不同问题。

问题现已解决!