我有一个简单的ImageView,我想在ConstraintLayout中的ImageView的底部边缘居中。我知道它应该工作(基于StackOverflow上发布的其他问题),并且我在不同的视图上执行相同的操作,在此我将ImageView放在View的起始边缘上。有人看到这种情况不起作用的情况吗?我已经重建并重新启动,并且在没有帮助的情况下清除了Android Studio的缓存。
非常简单的布局:
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/header_image"
android:layout_width="0dp"
android:layout_height="0dp"
android:scaleType="fitXY"
android:src="@drawable/placeholder_header"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHeight_percent="0.2"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
/>
<ImageView
android:id="@+id/artist_image"
android:layout_width="0dp"
android:layout_height="0dp"
android:scaleType="fitXY"
android:src="@drawable/level_artist_image_placeholder"
app:layout_constraintBottom_toBottomOf="@id/header_image"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintEnd_toEndOf="@id/header_image"
app:layout_constraintStart_toStartOf="@id/header_image"
app:layout_constraintTop_toBottomOf="@id/header_image"
app:layout_constraintWidth_percent="0.32"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
代替:
答案 0 :(得分:0)
将artist_image的宽度和高度更改为wrap_content,它对我有用,您还可以在dp中设置高度和宽度,并且仍然可以使用
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/header_image"
android:layout_width="0dp"
android:layout_height="0dp"
android:scaleType="fitXY"
android:src="@drawable/ic_launcher_foreground"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHeight_percent="0.2"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
/>
<ImageView
android:id="@+id/artist_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="fitXY"
android:src="@drawable/ic_launcher_background"
app:layout_constraintBottom_toBottomOf="@+id/header_image"
app:layout_constraintEnd_toEndOf="@id/header_image"
app:layout_constraintStart_toStartOf="@id/header_image"
app:layout_constraintTop_toBottomOf="@id/header_image"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
答案 1 :(得分:0)
我已将您的xml
(drawable
除外)复制粘贴到Android Studio
中,并且像您提到的那样工作正常。
当前
ConstraintLayout
的依赖项:androidx.constraintlayout:constraintlayout:1.1.3
答案 2 :(得分:0)
尽管有所有这些答案,但我怀疑是否可以使用标准方法实现您想要的结果,但是可以像这样进行一些近似:
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/header_image"
android:layout_width="0dp"
android:layout_height="0dp"
android:scaleType="fitXY"
android:src="#ff0000"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHeight_percent="0.2"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guide"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.1" />
<ImageView
android:id="@+id/artist_image"
android:layout_width="0dp"
android:layout_height="0dp"
android:scaleType="fitXY"
android:src="#00ff00"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintEnd_toEndOf="@id/header_image"
app:layout_constraintStart_toStartOf="@id/header_image"
app:layout_constraintTop_toBottomOf="@id/guide"
app:layout_constraintWidth_percent="0.32" />
</androidx.constraintlayout.widget.ConstraintLayout>
结果:
一个更新:从理论上(未进行测试),您应该实际上可以执行类似的操作。 Ti应该为像素提供完美的布局,而不依赖任何绝对值btw:
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/header_image"
android:layout_width="0dp"
android:layout_height="0dp"
android:scaleType="fitXY"
android:src="#ff0000"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHeight_percent="0.2"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<View
android:id="@+id/stub"
android:layout_width="0dp"
android:layout_height="0dp"
android:scaleType="fitXY"
android:visibility="invisible"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHeight_percent="0.4"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/artist_image"
android:layout_width="0dp"
android:layout_height="0dp"
android:scaleType="fitXY"
android:src="#00ff00"
app:layout_constraintCircle="@+id/stub"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintEnd_toEndOf="@id/header_image"
app:layout_constraintStart_toStartOf="@id/header_image"
app:layout_constraintTop_toBottomOf="@id/header_image"
app:layout_constraintWidth_percent="0.32" />
</androidx.constraintlayout.widget.ConstraintLayout>