大家好,我需要使用约束布局将2个固定宽度和高度的imageview添加到屏幕中心,我们如何才能实现这样的目标。
xml布局
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.activity.profile.view.UserDetailsActivity">
<TextView
android:id="@+id/tv_label"
android:layout_width="0dp"
android:layout_height="0dp"
android:gravity="center"
android:text="@string/you_are"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHeight_percent=".1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintWidth_percent=".25" />
<CircularImageView
android:id="@+id/iv_farmer"
android:layout_width="@dimen/_100dp"
android:layout_height="@dimen/_100dp"
android:src="@drawable/ic_profilewithimage"
app:civ_border="true"
app:civ_border_color="#e4e4e4"
app:civ_border_width="@dimen/_1dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="@+id/iv_prof"
app:layout_constraintTop_toBottomOf="@+id/tv_label" />
<CircularImageView
android:id="@+id/iv_prof"
android:layout_width="@dimen/_100dp"
android:layout_height="@dimen/_100dp"
android:src="@drawable/ic_profilewithimage"
app:civ_border="true"
app:civ_border_color="#e4e4e4"
app:civ_border_width="@dimen/_1dp"
app:layout_constraintLeft_toRightOf="@+id/iv_farmer"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_label" />
</android.support.constraint.ConstraintLayout>
我正在尝试此操作,但视图未居中。
答案 0 :(得分:1)
在您的第一个CircularImageView
中,您的权利约束存在问题:
app:layout_constraintRight_toRightOf="@+id/iv_prof"
这应限制在iv_prof
的左侧:
app:layout_constraintRight_toLeftOf="@id/iv_prof"
如果您希望链条在中心更靠近,则可以通过将属性添加到第一个packed
来将链的样式更改为CircularImageView
:
app:layout_constraintHorizontal_chainStyle="packed"
要将Views
垂直放置在父级中,您需要将每个View
的顶部和底部分别限制在父级的顶部和底部。
您还对某些Views
使用了左/右约束,而对其他约束使用了开始/结束。尝试在整个布局中仅使用其中的一组。
答案 1 :(得分:1)
我已经更新了您的xml代码。请尝试这个。
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.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">
<TextView
android:id="@+id/tv_label"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:gravity="center"
android:text="You are"
app:layout_constraintBottom_toTopOf="@+id/iv_farmer"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHeight_percent=".1"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintWidth_percent=".25" />
<CircularImageView
android:id="@+id/iv_farmer"
android:layout_width="@dimen/_100dp"
android:layout_height="@dimen/_100dp"
android:src="@drawable/ic_profilewithimage"
app:civ_border="true"
app:civ_border_color="#e4e4e4"
app:civ_border_width="@dimen/_1dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/iv_prof"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<CircularImageView
android:id="@+id/iv_prof"
android:layout_width="@dimen/_100dp"
android:layout_height="@dimen/_100dp"
android:src="@drawable/ic_profilewithimage"
app:civ_border="true"
app:civ_border_color="#e4e4e4"
app:civ_border_width="@dimen/_1dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/iv_farmer"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
希望它会有所帮助:)